我正在使用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。
有任何解决此问题的建议吗?
感谢。
答案 0 :(得分:0)
肯定是openCv3.2相关问题。我不能说这是opencv中的bug还是某些库不匹配。我安装了OpenCV3.0,一切都按照预期运行。
答案 1 :(得分:0)
在OpenCV 2.4。*中你应该使用:
cv2.cvtColor(frame, cv2.cv.CV_BGR2GRAY)