質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Jupyter

Jupyter (旧IPython notebook)は、Notebook形式でドキュメント作成し、プログラムの記述・実行、その実行結果を記録するツールです。メモの作成や保存、共有、確認などもブラウザ上で行うことができます。

OpenCV

OpenCV(オープンソースコンピュータービジョン)は、1999年にインテルが開発・公開したオープンソースのコンピュータビジョン向けのクロスプラットフォームライブラリです。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

1回答

2074閲覧

OpenCV-pythonで行う顔認証について

Gurt

総合スコア14

Jupyter

Jupyter (旧IPython notebook)は、Notebook形式でドキュメント作成し、プログラムの記述・実行、その実行結果を記録するツールです。メモの作成や保存、共有、確認などもブラウザ上で行うことができます。

OpenCV

OpenCV(オープンソースコンピュータービジョン)は、1999年にインテルが開発・公開したオープンソースのコンピュータビジョン向けのクロスプラットフォームライブラリです。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2019/06/01 13:08

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行目に出ていると思うのですがカスケードファイルのパスのミスなのでしょうか。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

カスケードファイルではなく、おそらく画像の読み取りに失敗しています。
girls.jpg を~~絶対パスで取得してみて下さい。~~移動してみて下さい。

投稿2019/06/01 13:12

編集2019/06/01 13:15
LouiS0616

総合スコア35658

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Gurt

2019/06/01 13:17

ありごとございます!カスケードファイルだけ実行ファイルのディレクトリにまとめていて肝心のgirl.jpg忘れていただけでした(汗)
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問