2016-05-09 37 views
0

例外がある場合は混乱します。
これが初めてですが、検出プログラムにハフル円を検出するJAVA OpenCV

public static void chargement(Mat img) { 
    NByte = (int) (img.total() * img.elemSize()); 
    buffer = new byte[NByte]; 
    img.get(0, 0, buffer); 
} 

public static Point[] detectCercle(Mat img, int rayon) { 

    Mat circles = new Mat(); 
    Point[] circlesList = null; 

    Imgproc.HoughCircles(img, circles, Imgproc.CV_HOUGH_GRADIENT, 1, 60, 200, 20, 30, 0); 

    System.out.println("#rows " + circles.rows() + " #cols " + circles.cols()); 
    double x = 0.0; 
    double y = 0.0; 
    int r = 0; 

    for (int i = 0; i < circles.rows(); i++) { 
     double[] data = circles.get(i, 0); 
     for (int j = 0; j < data.length; j++) { 
      x = data[0]; 
      y = data[1]; 
      r = (int) data[2]; 
     } 
     circlesList[i] = new Point(x, y); 
    } 
    return circlesList; 

} 

public static void main(String[] args) { 
    System.loadLibrary(Core.NATIVE_LIBRARY_NAME); 
    Mat matimage1 = Imgcodecs.imread("src/imge1.jpg", Imgcodecs.CV_LOAD_IMAGE_COLOR); 
    Mat matimage2 = Imgcodecs.imread("src/image2.jpg", Imgcodecs.CV_LOAD_IMAGE_COLOR); 
    Mat matimage3 = Imgcodecs.imread("src/image3.jpg", Imgcodecs.CV_LOAD_IMAGE_COLOR); 
    detectCercle(matimage3,2); 

} 

をコーディングしています例外:

enter image description here

は、テキスト イメージテストを強調した:

enter image description here

答えて

0

HoughCirclesは8ビットイメージを必要としますが、フラグCV_LOAD_IMAGE_COLORはイメージをカラーイメージに変換します。 CV_LOAD_IMAGE_GRAYSCALEを試して、読んでいる8ビットイメージを維持してください。

文書を参照してください。imread docs

+0

ありがとうございます –

関連する問題