我正在使用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库。
有什么建议来解决这个问题吗?
谢谢。