OpenCVを使った顔認証の学習
現在、「すぐに使える!業務で実践できる!PythonによるAI・機械学習・深層学習アプリの作り方」という本を使いjupyterでPythonを学習しています。
その中でOpenCVで顔を検出し赤枠で囲う方法が載っています。手順通りプログラムを書き実行してみたのですが以下のエラーが出てしまいます。
カスケードファイルはGitHub > opencv > data > haarcascades内のを使用しています。
発生している問題・エラーメッセージ
error Traceback (most recent call last) <ipython-input-2-5ab69dd951f9> in <module>() 8 # 画像を読み込んでグレイスケールに変換する 9 img = cv2.imread("girl.jpg") ---> 10 img_gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) 11 12 # 顔認識を実行 error: OpenCV(4.1.0) /Users/travis/build/skvark/opencv-python/opencv/modules/imgproc/src/color.cpp:182: error: (-215:Assertion failed) !_src.empty() in function 'cvtColor'
該当のソースコード
Python
1import matplotlib.pyplot as plt 2import cv2 3 4# カスケードファイルを指定して検出器を作成 5cascade_file = "haarcascade_frontalface_alt.xml" 6cascade = cv2.CascadeClassifier(cascade_file) 7 8# 画像を読み込んでグレイスケールに変換する 9img = cv2.imread("girl.jpg") 10img_gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) 11 12# 顔認識を実行 13face_list = cascade.detectMultiScale(img_gray, minSize = (150, 150)) 14 15# 結果を確認 16if len(face_list) == 0: 17 print("error") 18 quit() 19 20# 認識した部分に印をつける 21for (x, y, width, height) in face_list: 22 print("顔の座標 = ", x, y, width, height) 23 red = (0, 0, 255) 24 cv2.rectangle(img, (x, y), (x + width, y + height), red, thickness = 20) 25 26# 画像を出力 27cv2.imwrite("face-detect.png", img) 28plt.imshow(cv2.cvtColor(img, cv2.COLOR_BGR2RGB)) 29plt.show()
試したこと
いくつか似たようなエラーが出ている方の対処法などを拝見したところカスケードファイルのパスが間違っているというものが多かったため、実行ファイルとカスケードファイルを同じディレクトリにまとめたり、カスケードファイルのパス(cascade_file = "~"のところであっているのでしょうか)を./から初めてみたりはしたのですが変わらずでした。
エラー自体は10行目に出ていると思うのですがカスケードファイルのパスのミスなのでしょうか。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/06/01 13:17