Python OpenCv分段错误

时间:2017-05-10 21:15:26

标签: python opencv

我正在使用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()时崩溃了。帧变量需要(Pdb) frame.size 921600

我甚至使用cv2.imshow("color_image", frame)来显示彩色框并正确显示。但是,当我将其转换为灰度时,它会崩溃!

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

有任何解决此问题的建议吗?

感谢。

2 个答案:

答案 0 :(得分:0)

肯定是openCv3.2相关问题。我不能说这是opencv中的bug还是某些库不匹配。我安装了OpenCV3.0,一切都按照预期运行。

答案 1 :(得分:0)

在OpenCV 2.4。*中你应该使用:

cv2.cvtColor(frame, cv2.cv.CV_BGR2GRAY)