pythonで用意した動画からリアルタイムで人物を検出するプログラムを作成しています。
openCVのライブラリであるカスケードファイルを用いて検出を行いたいのですが以下のようなエラーが発生しました。
エラーの意味と解消方法をお教え願います。
発生している問題・エラーメッセージ
Traceback (most recent call last): File "humandet.py", line 17, in <module> facerect = f_cascade.detectMultiScale(frame, scaleFactor=1.2, minNeighbors=2, minSize=(1, 1)) cv2.error: OpenCV(3.4.3) /Users/travis/build/skvark/opencv-python/opencv/modules/objdetect/src/cascadedetect.cpp:1698: error: (-215:Assertion failed) !empty() in function 'detectMultiScale'
該当のソースコード
python
1import cv2 2import os 3 4 5#人の認識 6f_cascade = cv2.CascadeClassifier('./haarcascade_fullbody.xml') 7 8# カメラの起動 9cap = cv2.VideoCapture('Sample.mp4') 10 11while(True): 12 13 # 動画ストリームからフレームを取得 14 ret, frame = cap.read() 15 16 #物体認識(人)の実行 17 facerect = f_cascade.detectMultiScale(frame, scaleFactor=1.2, minNeighbors=2, minSize=(1, 1)) 18 19 #検出した人を囲む矩形の作成 20 for rect in facerect: 21 cv2.rectangle(frame, tuple(rect[0:2]),tuple(rect[0:2] + rect[2:4]), (255, 255, 255), thickness=2) 22 23 text = 'p' 24 font = cv2.FONT_HERSHEY_PLAIN 25 cv2.putText(frame,text,(rect[0],rect[1]-10),font, 2, (255, 255, 255), 2, cv2.LINE_AA) 26 27 # 表示 28 cv2.imshow("Show FLAME Image", frame) 29 30 # qを押したら終了 31 k = cv2.waitKey(1) 32 if k == ord('q'): 33 break 34 35cap.release() 36cv2.destroyAllWindows() 37
試したこと
カスケードファイルをgithubからDLしてパス指定し直してみましたがうまく行きません。
補足情報(FW/ツールのバージョンなど)
macOS:mojave(10.4.5)
openCV:3.4.2
python:3.6.0
あなたの回答
tips
プレビュー