2011-11-17 3 views
4

나는 cvfindcontour를 사용하여 윤곽선을 찾았습니다. 이제 첫 번째 윤곽과 두 번째 윤곽에 액세스하고 그 사이의 유클리드 거리를 찾고 싶습니다. 아무도 그 코드를 도와 줄 수 있습니까?opencv에서 윤곽선/객체 사이의 거리 찾기

CvPoint *contourPoint, *contourPoint2; 
contourPoint = (CvPoint *)CV_GET_SEQ_ELEM(CvPoint,contours,1); 
contourPoint2 = (CvPoint *)CV_GET_SEQ_ELEM(CvPoint,contours,2); 
double dis = sqrt(double((contourPoint->x - contourPoint2->x) * (contourPoint->x - contourPoint2->x) + (contourPoint->y - contourPoint2->y) * (contourPoint->y - contourPoint2->y))); 

올바른 방법입니까?

+1

첫 번째 C++ 설명서를 읽은 다음 OpenCV 문서를 읽습니다. 귀하의 질문은 귀하의 노력이 부족함을 나타냅니다. – Sam

+0

네, 저도 그렇게해야만했음을 이해합니다. 그러나 초기 마감 때문에 철저히 학습 할 충분한 시간이 없었습니다. 그러나 마감일 이후에 자세히 살펴 보겠습니다. 나 좀 도와 줄래? –

+0

contour1과 contour2는 포인터이기 때문에 최소한 "contour1-> x-contour2-> x'라고 써야합니다. – Bort

답변

3

cvMoments을 사용하여 각 윤곽의 중심을 계산 한 다음 두 개의 중심 사이에 Euclidean distance을 계산합니다. Here은 그것에 관한 openframeworks의 게시물입니다. Here은 opencv 메일 링리스트의 게시물입니다.

희망 하시겠습니까?

+3

무게 중심 사이의 거리가 매우 클 수 있으며 동시에 같은 거리에서 테두리 사이의 거리가 매우 작을 수 있습니다. – crenate

+0

마지막 두 링크가 죽었습니다 ..... – AGS