0

我正在从事涉及对象分割的计算机图像处理项目,我找到了轮廓,但我只想绘制其中的一些,例如,第一个以进一步填充颜色。不幸的是,我不断收到此错误:TypeError: Expected CvSeq for argument 'contour'。

这是发生错误的代码片段。

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) 
4

1 回答 1

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) 
于 2013-06-23T09:54:00.177 回答