如何在 Python 中使用 OpenCV 检测和绘制轮廓?
How to detect and draw contours using OpenCV in Python?
我写了下面的代码来检测和绘制轮廓:
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);
这是我收到的错误:
Traceback (most recent call last):
File "C:/Users/R.K.singh/Desktop/Image processing/intro-to-contours.py", line 10, in
contours,hierarchy = cv2.findContours(thresh,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE);
ValueError: too many values to unpack
怎么了?我正在使用 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)
另外这个link会对你有所帮助。
为了强调Selchuk 的观点,涉及OpenCV 的语法3.x 做了一点改动。当涉及 cv2.findContours
时,它具有不同的 return 值。它 return 如下 image, contours, hierarchy
。
OpenCV 的早期版本,但是,return 仅 contours, hierarchy
。他们没有 return 图片。
我写了下面的代码来检测和绘制轮廓:
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);
这是我收到的错误:
Traceback (most recent call last): File "C:/Users/R.K.singh/Desktop/Image processing/intro-to-contours.py", line 10, in contours,hierarchy = cv2.findContours(thresh,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE); ValueError: too many values to unpack
怎么了?我正在使用 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)
另外这个link会对你有所帮助。
为了强调Selchuk 的观点,涉及OpenCV 的语法3.x 做了一点改动。当涉及 cv2.findContours
时,它具有不同的 return 值。它 return 如下 image, contours, hierarchy
。
OpenCV 的早期版本,但是,return 仅 contours, hierarchy
。他们没有 return 图片。