2

我编写了以下代码来检测和绘制轮廓:

img = cv2.imread('test2.tif');

if not img is None:
    imgray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY);
    ret,thresh = cv2.threshold(imgray,127,255,0);
    contours,hierarchy = cv2.findContours(thresh,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE);

    #draw a three pixel wide outline 
    cv2.drawContours(img,contours,-1,(0,255,0),3);

这是我收到的错误:

回溯(最近一次调用最后):文件“C:/Users/RKsingh/Desktop/Image processing/intro-to-contours.py”,第 10 行,在轮廓中,层次结构 = cv2.findContours(thresh,cv2.RETR_TREE,cv2 .CHAIN_APPROX_SIMPLE); ValueError:解包的值太多

怎么了?我正在使用 Python 2.7 和 OpenCV 3.1.0

4

2 回答 2

2

为了强调 Selchuk 的观点,涉及 OpenCV 3.x 的语法发生了一些变化。当涉及到 时,它具有不同的返回值cv2.findContours。它返回以下内容image, contours, hierarchy

但是,以前版本的 OpenCV 仅返回contours, hierarchy. 他们不返回图像。

于 2017-01-05T14:47:22.063 回答
2

更改以下行。您使用的是 OpenCV 3.1.0,但您使用 OpenCV 2.7.x 进行了编码。

(cnts, _) = cv2.findContours(thresh.copy(), cv2.RETR_TREE,
      cv2.CHAIN_APPROX_SIMPLE)

链接也将对您有所帮助。

于 2017-01-05T13:54:50.943 回答