OpenCV(4.5.5) D:\a\opencv-python\opencv-python\opencv\modules\imgproc\src\contours.cpp:197: error: (-210:Unsupported format or combination of formats) [Start]FindContours supports only CV_8UC1 images when mode != CV_RETR_FLOODFILL otherwise supports CV_32SC1 images only in function 'cvStartFindContours_Impl'
时间: 2023-07-21 08:05:17 浏览: 264
opencv-4.5.5-1.5.7-API文档-中文版.zip
5星 · 资源好评率100%
这个错误通常出现在使用 `cv2.findContours()` 函数时,输入的图像格式或图像深度与函数所要求的格式和深度不匹配。
根据错误提示,`cv2.findContours()` 函数只支持 `CV_8UC1` 格式的图像,除非 `mode` 参数为 `CV_RETR_FLOODFILL`,此时只支持 `CV_32SC1` 格式的图像。
因此,你需要确保输入的图像格式为 `CV_8UC1` 或 `CV_32SC1`,可以通过以下方式进行转换:
```python
img = cv2.imread('image.jpg')
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
binary = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY)[1] # 将灰度图像二值化
# 执行轮廓检测
contours, hierarchy = cv2.findContours(binary, cv2.RETR_LIST, cv2.CHAIN_APPROX_SIMPLE)
```
在上述代码中,我们首先将彩色图像转换为灰度图像,然后使用 `cv2.threshold()` 函数将灰度图像二值化,最后将二值化的图像作为输入传递给 `cv2.findContours()` 函数,以获得轮廓信息。
希望这个解决方案对你有帮助!
阅读全文