一、问题如下:
cv2.findContours()这个方法是用来找出轮廓值的:
//cv2.findContours找出轮廓值,cv2.RETR_EXTERNAL表示图像的外轮廓
imagex, contours, hierarchy =
cv2.findContours(binary_niblack.copy(),cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE)
但是在运行时,我所使用的opencv-python4.1.2.30则报错:
- 错误信息:
ValueError: not enough values to unpack (expected 3, got 2)
值错误:没有足够的值解包(应为3,得到2)
二、问题解决:
1、降级(或升级)OpenCV:
我在python中安装的第三方库是OpenCV4.1.2.30,所以这里要降级处理:
pip3 install opencv-python==3.4.3.18
使用pip将版本降为3.4.3.18。
因为我用的是Anaconda,所以这样子降版本没有用,需要用
conda install opencv-python==3.4.3.18
但显示错误:
PackagesNotFoundError: The following packages are not available from current channels:
只好百度whl文件安装opencv-python 3.4.0.12
再在Anaconda上安装
出现问题:下载whl文件问题:解决python pip安装提示"not a supported wheel on this platform"
2、解析差异:
- OpenCV2和OpenCV4中:
findContours这个轮廓提取函数会返回两个值:
①轮廓的点集(contours)
②各层轮廓的索引(hierarchy) - OpenCV3中:
则会返回三个值:
①处理的图像(image)
②轮廓的点集(contours)
③各层轮廓的索引(hierarchy)
cv2.findContours()相关:
参数:
在使用opencv-python4.1.2.30时,调用cv2.findContours()出现ValueError,预期解包3个值但只得到2个。解决方法包括降级OpenCV到3.4.3.18,但遇到Anaconda渠道找不到对应版本的问题,最终通过手动下载whl文件并安装。OpenCV2与4中findContours返回2个值,而OpenCV3返回3个值,包括图像、轮廓点集和轮廓索引。


被折叠的 条评论
为什么被折叠?



