2011-08-05 2 views
0

OpenCV cvFindContour() 메서드는 8 연결 이웃 규칙에 따라 연결된 구성 요소를 가져옵니다. 4 연결 이웃 규칙으로 변경하는 방법이 있습니까? 연결 상태를 확인할 때 구석 셀을 고려하지 않습니다.CvFindContours()를 8 연결의 네 연결 이웃으로 변경합니다.

분명히 Mathematica는 CornerNeighbors->Falseshown here on SO과 함께 이것을 수행합니다. OpenCV에서이 작업을 수행하는 방법은 무엇입니까? cv * .h 파일 (실제로는 털이 많음)의 함수 정의를 실제로 변경한다고해도 ... 포인터는 무엇입니까?

답변

1

나는 이것이 불가능할까 두렵다. opencv에 코드 변경을 제안하고이를 허용하는 플래그를 추가하는 것이 좋습니다. 현재이 파일에 :

http://code.opencv.org/projects/opencv/repository/entry/trunk/opencv/modules/imgproc/src/contours.cpp

모든 이웃을 결정 icvCodeDeltas라는 배열이 있습니다. 당신은 그것을 사용되는 경우 확인하고 예를 들어 CV_NEIGHBOURS_CROSS가 지정 될 때 사용되는

static const CvPoint icvCodeDeltas4[4] = { {1, 0}, {0, -1}, {-1, 0}, {0, 1} }; 

을 추가 할 수 있습니다. 그런 다음 opencv-community에 오픈 소스가 작동하는 방식을 추가하도록 요청하십시오. 어쩌면 빠른, 더러운, 당신은 --해야-부끄러워 수정은 다음과 같이 될 것이다 :

virtual CvPoint icvCodeDeltas[8]; 
icvCodeDeltas = { {1, 0}, {0, -1}, {-1, 0}, {0, 1}, {1, 0}, {0, -1}, {-1, 0}, {0, 1} }; 

그러나이 '정적'와 'CONST을 피할 수 있다면 나는 그것을 테스트하지 않았고, 나는 아무 생각이 없다 '조심하십시오.)

관련 문제