前提・実現したいこと
Macを使用しています。
仮想環境(venv)でopencv-pythonを使用しています。
顔認証を行うとエラーが出ます。
おそらくhaarcascade_frontalface_alt.xmlのパスが間違っていると思うのですが、
venvでopencv-pythonを使用した場合、カスケードのパスはどのようになっているのでしょうか。
初歩的な質問で恐縮ですが、よろしくお願いいたします。
発生している問題・エラーメッセージ
$ python faceditect.py Traceback (most recent call last): File "faceditect.py", line 27, in <module> facerect = cascade.detectMultiScale(frame, scaleFactor=1.2, minNeighbors=2, minSize=(10,10)) cv2.error: OpenCV(4.0.0) /Users/travis/build/skvark/opencv-python/opencv/modules/objdetect/src/cascadedetect.cpp:1658: error: (-215:Assertion failed) !empty() in function 'detectMultiScale'
該当のソースコード
python
1# coding: utf-8 2 3import cv2 4 5if __name__ == "__main__": 6 7 # 内蔵カメラを起動 8 cap = cv2.VideoCapture(0) 9 10 # OpenCVに用意されている顔認識するためのxmlファイルのパス 11 cascade_path = "/usr/local/share/OpenCV/haarcascades/haarcascade_frontalface_alt.xml" 12 # カスケード分類器の特徴量を取得する 13 cascade = cv2.CascadeClassifier(cascade_path) 14 15 # 顔に表示される枠の色を指定(白色) 16 color = (255,255,255) 17 18 while True: 19 20 # 内蔵カメラから読み込んだキャプチャデータを取得 21 ret, frame = cap.read() 22 23 # モノクロで表示する 24 #frame = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) 25 26 # 顔認識の実行 27 facerect = cascade.detectMultiScale(frame, scaleFactor=1.2, minNeighbors=2, minSize=(10,10)) 28 29 # 顔が見つかったらcv2.rectangleで顔に白枠を表示する 30 if len(facerect) > 0: 31 for rect in facerect: 32 cv2.rectangle(frame, tuple(rect[0:2]), tuple(rect[0:2]+rect[2:4]), color, thickness=2) 33 34 # 表示 35 cv2.imshow("frame", frame) 36 37 # qキーを押すとループ終了 38 if cv2.waitKey(1) & 0xFF == ord('q'): 39 break 40 41 # 内蔵カメラを終了 42 cap.release() 43 cv2.destroyAllWindows()
試したこと
ここに問題に対して試したことを記載してください。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/01/29 13:31
2019/01/29 14:51