2014-03-24 4 views
2

이미지에서 노이즈가 많은 데이터 및/또는 주 가장자리/그라디언트로 인해 윤곽선이 닫히지 않을 수도있는 findContours를 강력하게 만드는 방법은 무엇입니까? 이 같은 역치 그림에 그것을 사용하는 경우 이 알고리즘은 아주 잘 실행 : 나는 다음과 같은 문제로 실행 해요 첫 번째 경우 (폐쇄되지 않음)에 대한OpenCV findContours : 강건하게 만들기

enter image description here

을하지만 때 걸릴 자세히 사진을, 다음에는 닫힌 윤곽선이없는 여기를 참조 :

enter image description here

방법은이 경우에 작동되도록하려면? 저는 언제나 항상 그림의 상단과 하단에 수평선을 그려서 종이 노트를 항상 "교차"시켜서 (메모가 너무 가까이에서 캡처 된 경우) 전체 윤곽을 잡을 것이라고 생각했습니다. 그러나 이것은 아마도 내가 올바른 윤곽선을 얻지 못했을 때 노트가 약간 회전 할 때 너무 잘 작동하지 않을 것입니다. 더 좋은 아이디어가 있습니까? 미리 감사드립니다.

답변

1

이것은 간단한 해결책 일뿐입니다. 심지어 그나마이 닫혀 있지 않기 때문에 모든 윤곽을 얻을,

Point pointGAP1; 
Point pointGAP2; 

if (pointGAP1.coordinate == iamgeBorder || pointGAP2.coordinate == iamgeBorder) { 
    // add line from pointGAP1 to pointGAP2 
} 
+0

문제는, 그래서 할 수 없습니다 : 당신이 알고있는 경우

윤곽 포인트의 격차 (앞서 의사 코드)에 구인 당신의 아이디어를 구현하십시오. Imgproc.findContours (I, 등고선, 새로운 매트(), Imgproc.RETR_LIST, Imgproc.CHAIN_APPROX_SIMPLE);) 또는'Imgproc.CHAIN_APPROX_SIMPLE' 때문에 사용 중이며 유효한 경우에만 윤곽을 얻습니다. 닫힌 사각형? 함수의 호출을 변경하여 열려있는 윤곽선도 만들 필요가 있습니까? – tim

+0

예. 올바르게 매개 변수 중 하나를 기억하면 findContours 출력이 윤곽을 엽니 다. –

+0

http://goo.gl/U0N7sy을 (를)보실 수 있습니다. 어느 것을 모릅니다!? – tim

관련 문제