使用cv2.findContours时出错。

4

我尝试为图像查找轮廓,但是出现了错误。

我的代码如下:

import cv2
import numpy as np

img = cv2.imread('star.jpg',0)

ret,thresh = cv2.threshold(img,127,255,0)

contours,hierarchy = cv2.findContours(thresh, 1, 2)

错误是:

Traceback (most recent call last): File "C:\Python27\OpenCVContore.py", line 5, in <module> contours,hierarchy,thresh = cv2.findContours(thresh, 1, 2) error: ........\opencv\modules\core\src\matrix.cpp:236: error: (-215) step[dims-1] == (size_t)CV_ELEM_SIZE(flags) in function cv::Mat::create

我正在使用 Python 2.7OpenCV 2.4.7,2.4.11

任何帮助都将不胜感激。


我正在使用OpenCV 3.0,但是当我使用有效的文件测试您的代码时,它可以正常工作。当我将文件名更改为不存在的文件时,我得到了与您的错误非常相似的错误。请确保图像文件与脚本在同一目录中,并且文件名完全匹配。 - Jason
读取图像没有问题。可能是在“contours,hierarchy = cv2.findContours(thresh,1,2)”这一行出了问题。为什么在OpenCV 2.4.7、2.4.11和2.4.12中与Python 2.4.9不起作用? - gokulraja
将文件名更改为不存在的文件,并查看您会收到什么错误。我敢打赌这不会与imread有关。 - Jason
是的,如果出现错误,imread 不会抛出任何异常,而是会在后面给你返回各种有趣的错误消息。因此,我使用了自己封装的 Python 包装器来解决这个问题。 - maxy
我已经在Python 3.4和OpenCV 3中尝试了这段代码。运行良好。| 在Python 2.x版本中出现错误,请问有什么问题?请提供一些在Python 2.x和OpenCV 2.4.x中有效的代码示例。 - gokulraja
1个回答

1

通过将我的Python版本更新到3.4和opencv版本3来解决了这个问题。但是找不到真正的解决方案。为什么Python 2.x版本不完全支持openCV?


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接