我尝试在OpenCV 4.4.0上使用cv2.findContours()(使用Python版本3.8.5),但它会抛出一个错误,我无法解决。我不确定代码有什么问题。这里是一些背景信息:
根据OpenCV的文档,cv2.findContours()
的语法如下:
contours, hierarchy = cv.findContours(image, mode, method[, contours[, hierarchy[, offset]]])
我查找了一些示例以确保正确地实现它,以下是我发现的两个示例:
示例1
(_, contours, _) = cv2.findContours(binary_image, cv2.RETR_LIST, cv2.CHAIN_APPROX_SIMPLE)
示例2
(_, cnts, _) = cv2.findContours(thresholded.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
这些是我在线找到的工作项目中的示例之一,类似的示例有很多。因此,我正在尝试实现从视频中获取的代码以了解更多有关该主题的内容,但它似乎对我不起作用,我找不到原因。以下是代码:
import cv2
import numpy as np
imagen =cv2.imread('lettuce.jpg')
gray = cv2.cvtColor(imagen,cv2.COLOR_BGR2GRAY)
_,binary = cv2.threshold(gray,100,255,cv2.THRESH_BINARY)
image,contours,hierarchy = cv2.findContours(binary,cv2.RETR_LIST,cv2.CHAIN_APPROX_SIMPLE)
cv2.drawContours(image,contours, -1, (0,255,0),3)
错误:
Traceback (most recent call last):
line 8, in <module>
image,contours,hierarchy = cv2.findContours(binary,cv2.RETR_LIST,cv2.CHAIN_APPROX_SIMPLE)
ValueError: not enough values to unpack (expected 3, got 2)