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 15:05:17 浏览: 53
这个错误通常出现在使用 `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()` 函数,以获得轮廓信息。
希望这个解决方案对你有帮助!
相关问题
OpenCV(4.7.0) D:\a\opencv-python\opencv-python\opencv\modules\imgproc\src\contours.cpp:197:
这个错误信息看起来是 OpenCV 的一个版本问题,可能是在使用 OpenCV 库的时候出现了问题。请确保你的 OpenCV 版本正确,并且库文件已经正确链接。还有,你可以尝试查看一下 contours.cpp 文件的第 197 行,看看是否有明显的错误。如果问题仍然存在,可以考虑更新或重新安装 OpenCV 库来解决该问题。
D:\a\opencv-python\opencv-python\opencv\modules\imgproc\src\resize.cpp
D:\a\opencv-python\opencv-python\opencv\modules\imgproc\src\resize.cpp 是 OpenCV 中的一个源代码文件,主要实现了图像缩放(resize)的算法。在计算机视觉领域中,图像缩放是非常常见的一个操作,可以用于图像尺寸调整、图像放大或缩小、图像旋转等场景。
该文件中实现了多种图像缩放算法,包括最近邻插值法、双线性插值法、三次卷积插值法等。这些算法的实现细节都可以在该文件中找到。同时,该文件还实现了一些辅助函数,如计算插值系数、调整边缘像素等。
如果你需要对 OpenCV 的图像缩放算法进行深入学习或者自己实现一个图像缩放函数,该文件将是一个不错的参考资源。