2016-11-21 4 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 
} 

을 그리고 .