处理图像轮廓时的“not enough values to unpack”错误

问题描述:在处理图像轮廓时发生的“not enough values to unpack”错误,未知原因,经查询未果,并不是中文符号的误用问题,故来请教各位老哥

报错内容:
File "Lesson_Test.py", line 1260, in
image,contours,hierarchy=cv2.findContours(img_1_binary,cv2.RETR_TREE,cv2.CHAIN_APPROX_NONE)
ValueError: not enough values to unpack (expected 3, got 2)

代码:

import cv2
import numpy

img_1=cv2.imread("E:\\python\\python_file\\Test003.jpg",cv2.IMREAD_UNCHANGED)
img_1_gray=cv2.cvtColor(img_1,cv2.COLOR_BGR2GRAY)
r,img_1_binary=cv2.threshold(img_1_gray,127,255,cv2.THRESH_BINARY_INV)
# 错误提示在 ↓ 这行出的问题
image,contours,hierarchy=cv2.findContours(img_1_binary,cv2.RETR_TREE,cv2.CHAIN_APPROX_NONE)
# 错误提示在 ↑ 这行出的问题
img_1_copy=img_1.copy()
img_1_contour=cv2.drawContours(img_1,contours,-1,(255,0,0),1)
cv2.imshow("1",img_1)
cv2.imshow("result",img_1_binary)
cv2.waitKey()
cv2.destroyAllWindows()

这是因为cv2.findContours接口的返回值更新了,在以前这个接口是有3个返回值的,先在只有2个返回值了
代码改成下面这样就行了

contours,hierarchy=cv2.findContours(img_1_binary,cv2.RETR_TREE,cv2.CHAIN_APPROX_NONE)

这个错误的原因是,期望有三个返回值,但其实函数只有两个返回值

解决方法,检查函数和接收函数返回值的参数个数是否一致,改成一致就行;比如这个语句你要返回img_1_binary, cv2.RETR_TREE, cv2.CHAIN_APPROX_NONE这三个的值,而最终只有两个返回了,因为我没看到完整的代码,你要检查一下是不是哪个没有写返回,还是说这句话写多了参数返回就行啦~

觉得有帮助的话,可以点击一下 采纳 哟,谢谢~