最近在OpenCV-Python接口中使用cv2.findContours()函数来查找检测物体的轮廓。
根据网上的教程,Python OpenCV的轮廓提取函数会返回两个值,第一个为轮廓的点集,第二个是各层轮廓的索引。但是实际调用时我的程序报错了,错误内容如下:太多的值来解压缩(预计2)
其实是接受返回值不符,如果你仅仅使用一个变量一个去接受返回值,调用len (a),你会发现长度为3,也就是说这个函数实际上返回了三个值
第一个,也是最坑爹的一个,它返回了你所处理的图像
第二个,正是我们要找的,轮廓的点集
第三个,各层轮廓的索引
使用方式如下:
进口cv2 img=cv2.imread (“D: \ \测试\ \ contour.jpg”) 灰色=cv2.cvtColor (img cv2.COLOR_BGR2GRAY) 受潮湿腐烂、二进制=cv2.threshold(灰色,127255,cv2.THRESH_BINARY) 轮廓,等级=cv2.findContours(二进制、cv2.RETR_TREE cv2.CHAIN_APPROX_SIMPLE) cv2.drawContours (img,轮廓,1 (0,0255),3) cv2。img imshow (img) cv2.waitKey (0) >之前运行时出现错误:,<代码> ValueError:太多的值将代码>
原因:由于版本(使用的时3.2.0.7)问题cv.findContours返回值个数发生变化,变为3个,因此应该为
aa,点击率数据,海尔=cv2.findContours (im_th.copy (), cv2。RETR_EXTERNAL cv2.CHAIN_APPROX_SIMPLE) >之前假如第一个参数不使用,可写成
_,点击率数据,海尔=cv2.findContours (im_th.copy (), cv2。RETR_EXTERNAL cv2.CHAIN_APPROX_SIMPLE)拓展:
ValueError:太多的值将类错误,多为输入或者输出参数数量不一致导致。
参考: https://www.jb51.net/article/132200.htm
其实是接受返回值不符,如果你仅仅使用一个变量一个去接受返回值,调用len (a),你会发现长度为3,也就是说这个函数实际上返回了三个值
第一个,也是最坑爹的一个,它返回了你所处理的图像
第二个,正是我们要找的,轮廓的点集
第三个,各层轮廓的索引
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
关于Python opencv使用中的ValueError:太多的值来解压