2012-08-27 3 views
-1

크기의 함수로 contourAreas의 수를 세는 프로그램을 개발하여 사용자에게 표시하려고합니다.윤곽선 조사 및 라벨링

모든 영역에 drawContours을 만들 수 있었지만 각각 contouArea 아래에 텍스트 레이블을 추가하고 각각의 크기를 표시하고 싶습니다.

답변

0

시작해야합니다. 모든 윤곽을 통과하려면 아래의 h_next와 for 루프를 사용해야합니다. 더 자세히 알고 싶다면 게리 브래드 스키 (Gary Bradski)의 책 OpenCv 학습을 권합니다. 이 책에서 등고선 찾기에 대한 훌륭한 예가 있습니다.

CvMemStorage* contour_storage = cvCreateMemStorage(0); 
CvSeq* contours; 
CvFont font; 
cvInitFont(&font, CV_FONT_HERSHEY_SIMPLEX, 0.6f, 0.6f, 0, 2); 
cvFindContours(sourceImage, contour_storage, &contours, sizeof (CvContour), CV_RETR_CCOMP, CV_CHAIN_APPROX_SIMPLE); 

for (CvSeq* d = contours; d != NULL; d = d->h_next) { 
CvRect iconBox = cvBoundingRect(d, 0); 
CvPoint center = cvPoint(iconBox.x + (iconBox.width/2), iconBox.y + (iconBox.height/2)); 
int area = abs(cvContourArea(d, CV_WHOLE_SEQ)); 
cvPutText(sourceImage,"area", center, &font, CV_RGB(255, 255, 255)); 
} 
+0

안녕 diip_thomas, 답장을 보내 주셔서 감사합니다. 나는 당신에게 코드를 물려 봤다. :) 정말이 라이브러리를 배워야 할 때 책을 살 것입니다. –

1

당신이 당신의 윤곽 센터의 위치를 ​​검색하는 방법을 알고 당신은 putText

내가 추측 오픈 이력서 기능을 사용할 수 있습니다, ISN '는?

+0

안녕 abarral, 이 replying.Unfortunately 영어 주셔서 감사합니다 내 모국어가 아닌 내가 내 질문에 잘 공식화되지 않는다 생각합니다. 죄송합니다. 내가 얻으려고하는 것은 각각의 contourArea를 측정하고 거기에 각각의 위치와 주변에 각각의 영역과 텍스트 레이블을 둘러싸는 원으로 표시하는 것입니다. 내 질문은 다음과 같습니다 : 개별적으로 contourArea (countours [0] [1] ???)를 표시하고 거기에 (drawContour)를 사용하여 각각의 원을 표시 할 수 있습니까? 각 원 아래에 텍스트 레이블을 추가하는 방법은 무엇입니까? puctext에 대한 Opencv 도움말보기가 있지만 구현 방법을 잘 모르겠습니다. –