2016-11-21 10 views
-3

アンドロイドカメラを使用してスポットを検出するための最適なアルゴリズム、チュートリアルをお聞きしたいと思います。私は現在これに新しいです。肯定的な反応を期待しています。ありがとうございました!誰かがopencvとのこの協力関係について考えているなら、本当にあなたの助けが必要です!アンドロイドでの画像スポット検出

+0

opencvを探し始める – HourGlass

+0

私は現在のところ、私が開発したい葉のスポット検出にどのようにこのようなアルゴリズムを使用することができるのか分かりません。私はガイドが必要です! Ty – rloreto

+0

opencvとblobの検出に関するチュートリアルを探します。ちょっとした一般的なガイドライン:画像をグレースケールにして、コントラストで再生してください。最初に画像エディタで画像を開いて、スポットを目立たせるために何をする必要があるかを確認することが考えられます。 – reden

答えて

0

まず、Official Documentationをご覧ください。その後、初めのため、色セグメンテーションアプローチを試みるもので、あなたべき:HSVペインに

1)分割画像:

Imgproc.cvtColor(mat, mat, Imgproc.COLOR_RGB2HSV); 
final Mat frameH = channels.get(0); 
final Mat frameV = channels.get(2); 

2)しきい値バイナリイメージを取得するために必要な色(例えば、黄色の色相値黄色の斑点)のために:

Imgproc.threshold(frameH, frameH, <hue_min>, <hue_max>, Imgproc.THRESH_BINARY); 
Imgproc.threshold(frameV, frameV, <value_min>, <value_max>, Imgproc.THRESH_BINARY); 
Core.bitwise_and(frameH, frameV, thresholdMat); 

3)ギャップを埋めるために拡張:

Imgproc.dilate(thresholdMat, thresholdMat, new Mat(), new Point(-1, 1), 3); 

4)の境界を見つけます領域の輪郭:

List<MatOfPoint> contours = new ArrayList<MatOfPoint>(); 
Imgproc.findContours(thresholdMat, contours, new Mat(), Imgproc.RETR_LIST, Imgproc.CHAIN_APPROX_SIMPLE); 

5)は、今あなたはcontours、リスト内のスポットの輪郭を持って、あなたはそれをあなたの魔法を行うことができます。

Iterator<MatOfPoint> each = contours.iterator(); 
while (each.hasNext()) { 
    MatOfPoint contour = each.next(); 

    // do your magic with contour here 
} 

そしてまた、画像のノイズを除去するフィルタリングを忘れないでください。

関連する問題