Python OpenCV分段错误

3

我正在使用Theano和OpenCV在Keras上运行一个简单的网络。当执行cvtColor()方法时,我遇到了分段错误。

代码片段:

if __name__ == '__main__':
    cap = cv2.VideoCapture(0)
    if not cap:
       print "!!! Failed VideoCapture: unable to open device 0"
       sys.exit(1)
    cascade_path = "~/opencv-2.4.13.2/data/haarcascades/haarcascade_frontalface_default.xml"
    model = Model()
    model.load()
    while True:
        pdb.set_trace()
        _, frame = cap.read()


        frame_gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)


        cascade = cv2.CascadeClassifier(cascade_path)

以下是调试信息:
Model Loaded.
>
-> _, frame = cap.read()
(Pdb) n
-> frame_gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
(Pdb) list
 16         while True:
 17             pdb.set_trace()
 18             _, frame = cap.read()
 19     
 20            
 21  ->         frame_gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
 22     
 23            
 24             cascade = cv2.CascadeClassifier(cascade_path)
 25     
 26            
(Pdb) n
Segmentation fault

在调用cv2.cvtColor()时,它会崩溃。frame变量需要 (Pdb) frame.size 921600

我甚至使用了cv2.imshow("color_image", frame)来显示彩色帧并且显示正确。但是,一旦将其转换为灰度图像,它就会崩溃!

目前我正在使用OpenCV2.4。昨天,相同的代码在OpenCV3.2上正常工作。由于某些原因,我不得不降级opencv库。

有什么建议来解决这个问题吗?

谢谢。


1
这段代码本质上没有什么问题。我猜测是降级导致了错误。我使用OpenCV 3.0运行类似的代码,一切都很好。也许在2.4文档中有关于这个问题不可行的说明。 - AndyG
2个回答

0

这明显是与openCv3.2有关的问题。我无法确定它是否是opencv内部错误或某个库不匹配导致的。我安装了OpenCV3.0,一切都按照预期运行。


0
在OpenCV 2.4.*中,您应该使用:
cv2.cvtColor(frame, cv2.cv.CV_BGR2GRAY)

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