2014-06-12 4 views
7

OpenCV를 사용하여 사각형을 감지하려고합니다. 그러나 Canny 메서드를 실행 한 후 가장자리의 두 개가 일반적으로 지워지기 때문에 가끔씩 어려워지고 있습니다. 나는 Canny를 적용하기 전에 여러 다른 임계 값 세트를 시도해 보았지만 아직 큰 긍정적 인 결과를 얻지 못했습니다. 현재, 나는 이미지를 흐리게하고 있지 않다, 그래서 이것은 내가 뭘하는지 꽤 많이 있습니다 :OpenCV (Canny)를 사용한 가장자리 감지

Mat imgSource = Highgui.imread(filepath); 
Imgproc.Canny(imgSource, imgSource, 300, 600, 5, true); 

예 :

그런 original http://imagizer.imageshack.us/a/img822/8776/27i9j.jpg Canny http://imagizer.imageshack.us/a/img841/9868/wkc95.jpg

, 내가 OpenCV의의 findContours 방법을 시도하고있다 사각형을 감지하려면 시간의 80 %가 작동합니다. 어떻게 향상시킬 수 있습니까?

+0

을 시작으로 cvtColor (imgSource, imgSource, CV_BGR2GRAY)를 시도해보십시오. 임계 값 (imgSource, imgSource, 25,255, THRESH_BINARY); 그런 다음 찾기 .Contours –

답변

7

다른 임계 값을 사용해보십시오.이 경우 10,100과 같이 낮은 임계 값을 사용할 때 더 좋은 결과를 얻을 수 있습니다.

blur(src,src,Size(3,3)); 
cvtColor(src,tmp,CV_BGR2GRAY); 
Canny(src, thr, 10, 100, 3); 

또는 다른 방법으로이 같은 threshold 적용하여 윤곽 이미지를 얻을 것이다

,

threshold(tmp,thr,50,255,THRESH_BINARY_INV); 
2

문제는 여기 아마 이미지 압축 JPEG 파일 형식입니다. 당신은 단지 블랙/화이트 이미지 을 가지고 임계 값을 편집하기 때문에
는을 흑백으로 변환 이미지를보십시오.
이렇게하면 선의 가장자리 주변의 노이즈가 제거됩니다. 다음 canny는 모든 값과 함께 적용될 수 있습니다.

관련 문제