2013-06-23 1 views
0

개체 분할과 관련된 컴퓨터 이미지 처리 프로젝트에서 작업 중이며 윤곽선을 찾았지만 일부만 그려야합니다. 예를 들어 첫 번째 윤곽선을 색으로 채울 수 있습니다. 불행히도이 오류가 계속 발생합니다 : TypeError : 인수 'contour'에 대해 예상되는 CvSeq입니다.윤곽선 오류 선택

다음은 오류가 발생한 코드 조각입니다.

mem=cv.CreateMemStorage() 
nc=cv.FindContours(img_th,mem,cv.CV_RETR_LIST,cv.CV_CHAIN_APPROX_SIMPLE,(0,0)) 
c=nc[1] 
cv.DrawContours(img_adth,c,cv.CV_RGB(255,0,0),cv.CV_RGB(0,255,0),2,2,-1) 

답변

0

그리기 기능에서 오류가 발생합니다.

나는 opencv python API를 사용한 적이 없지만 C++과 달리 C 및 Python API는 윤곽선을 나타내는 데 사용되는 스타일이 다릅니다.

C++에서 컨투어 ID를 선택하고 그 중 하나만 그릴 수 있습니다. 모든 등고선을 그리려면 id = -1을 입력합니다.

C/Python에서는 벡터의 윤곽선을 사용하여 그 윤곽선 만 그립니다. 따라서 등고선 (nc)은 첫 번째 윤곽을 가리키는 포인터입니다. 모든 윤곽선을 그리려면 while (contours! = null) 루프를 사용합니다.

더 명확하게하기 위해 코드를 변경 했으므로이 코드를 사용해보십시오. 나는 조용하지 않다. 그래서이게 작동하면 알려줘.

... 
c = nc.next //until you select exact one 
cv.DrawContours(img_adth,c,cv.CV_RGB(255,0,0),cv.CV_RGB(0,255,0),2,2,-1)