contours, hierarchy = cv2.findContours(edges, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE) ValueError: too many values to unpack怎么解决
时间: 2023-08-13 17:02:06 浏览: 74
这个错误的原因是`cv2.findContours()`函数返回的值的数量与你尝试解包的变量数量不匹配。这是因为OpenCV版本不同,函数返回值的格式有所不同。
在OpenCV 3版本及以下,`cv2.findContours()`函数只返回轮廓列表,不返回层次结构。因此,你可以将函数调用修改为以下形式:
```python
contours, _ = cv2.findContours(edges, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
```
这样,只将轮廓列表赋值给`contours`变量,而忽略了层次结构的返回值。
在OpenCV 4版本及以上,`cv2.findContours()`函数返回两个值:轮廓列表和层次结构列表。因此,你可以将函数调用修改为以下形式:
```python
_, contours, _ = cv2.findContours(edges, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
```
这样,只将轮廓列表赋值给`contours`变量,而忽略了层次结构的返回值。
根据你使用的OpenCV版本,选择相应的修改方式来解决这个错误。