私はkeras上でtheanoとopencvを使用して簡単なネットワークを実行しています。私はcvtColor()メソッドの実行中にセグメンテーションフォールトエラーが発生します。 コードスニペット:以下Python OpenCvセグメンテーションフォールト
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をダウングレードしなければなりませんでした。
この問題を解決するための提案はありますか?
ありがとうございました。
このコードで、本質的には何も問題はありません。私の推測では、ダウングレードがあなたを殺したということです。私はOpenCV 3.0と同様のコードを実行し、それはちょうどいいです。多分、これが実現可能ではなかった2.4に関するドキュメントには何かがあります。 – AndyG