如何在Python中使用OpenCV检测和绘制轮廓?

如何在Python中使用OpenCV检测和绘制轮廓?,python,opencv,image-processing,opencv-contour,opencv-drawcontour,Python,Opencv,Image Processing,Opencv Contour,Opencv Drawcontour,我编写了以下代码来检测和绘制轮廓: 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

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

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/R.K.singh/Desktop/Image processing/intro to courtos.py”,第10行,在 轮廓,层次=cv2.查找轮廓(阈值,cv2.检索树,cv2.链近似简单); ValueError:要解压缩的值太多


怎么了?我正在使用Python 2.7和OpenCV 3.1.0更改以下行。您使用的是OpenCV 3.1.0,但您使用的是OpenCV 2.7.x

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

这也会对您有所帮助。

为了强调Selchuk的观点,涉及OpenCV 3.x的语法有了一些变化。当涉及到
cv2.findContours
时,它有一个不同的返回值。它返回以下
图像、轮廓、层次结构


然而,OpenCV的早期版本只返回轮廓、层次结构。他们不会返回图像。

什么是边缘?我的代码中没有定义它@塞尔çuk-İlhan aydi