我正在研究涉及物体分割的计算机图像处理项目,我找到了轮廓,但我想只绘制其中的一些,例如,第一个用颜色进一步填充它。不幸的是,我一直收到这个错误: 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 :(得分:0)
您从绘图功能中收到错误。
我从未使用过opencv python API,但我认为与C ++不同,C和python API具有不同的表示轮廓的风格。
在C ++中,您可以选择轮廓ID并仅绘制该轮廓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)