contours, hierarchy = cv2.findContours(binary, cv2.RETR_LIST, cv2.CHAIN_APPROX_SIMPLE) ValueError: too many values to unpack (expected 2)
时间: 2023-07-10 18:29:47 浏览: 218
这个错误通常是因为 OpenCV 版本不同导致的。在旧版本的 OpenCV 中,`findContours` 函数只返回一个值,而在新版本的 OpenCV 中,它返回两个值。
您可以尝试将代码中的语句修改为以下内容,以适应不同版本的 OpenCV:
```
contours, hierarchy = cv2.findContours(binary, cv2.RETR_LIST, cv2.CHAIN_APPROX_SIMPLE)[-2:]
```
这样可以确保代码在不同版本的 OpenCV 中都能够正常运行。
相关问题
ValueError: not enough values to unpack (expected 3, got 2)
这个错误通常是由于变量数量与函数返回值数量不匹配导致的。在这个特定的情况下,函数cv.findContours()返回的值少于期望的数量。这可能是因为您使用的OpenCV版本不同,或者您的代码中的参数不正确。您可以尝试检查您的代码并确保参数正确,或者尝试使用不同版本的OpenCV。以下是一些可能有用的解决方法:
1. 检查您的OpenCV版本是否正确。如果您使用的是较旧的版本,则可能需要更新到最新版本。
2. 检查您的代码中的参数是否正确。确保您正确地传递了所有必需的参数,并且它们的顺序正确。
3. 尝试使用不同的函数或参数。有时,使用不同的函数或参数可以解决此问题。
以下是一个可能的解决方案,您可以尝试在其中使用cv.RETR_TREE参数:
```python
out_binary, contours, hierarchy = cv.findContours(binary, cv.RETR_TREE, cv.CHAIN_APPROX_SIMPLE)
```
ValueError: not enough values to unpack (expected at least 4, got 3)
该错误是由于函数定义的返回值数量和调用函数时实际赋予的返回值数量不一致导致的。根据引用所述,该错误提示是在使用opencv进行关键点识别、边缘轮廓提取时出现的错误。具体原因是由于opencv版本不一致引起的。新版opencv(opencv4)在调用findContours时只需要两个参数,需要删除第一个参数;而opencv3需要三个参数。
解决该问题的方法有两种:
方法1:删除第一个参数
即将代码改为:contours, hierarchy = cv.findContours(binary, cv.RETR_EXTERNAL, cv.CHAIN_APPROX_SIMPLE)。
方法2:降低opencv版本
将opencv版本降至opencv3或使用opencv3.6以上版本。
希望以上解答对您有所帮助。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
阅读全文