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

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

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

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

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

1回答

862閲覧

pythonの顔認識(目)のエラー文がわからない

zakky0603

総合スコア4

OpenCV

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

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2020/03/27 08:17

コード pythonを使用

- エラー文、わからないこと
現在、pythonのOpencvで顔認識の勉強をしています。顔認識を正面バージョンは出来たのですが、目を認識は出来ず、また、エラー文の内容がよくわからない状態です。
error Traceback (most recent call last)
<ipython-input-35-eade36751c00> in <module>
12
13 # 顔を検知
---> 14 faces = face_cascade.detectMultiScale(gray)
15 for (x,y,w,h) in faces:
16 # 検知した顔を矩形で囲む

error: OpenCV(4.1.2) C:\projects\opencv-python\opencv\modules\objdetect\src\cascadedetect.cpp:1689: error: (-215:Assertion failed) !empty() in function 'cv::CascadeClassifier::detectMultiScale'

試しこと

今、参考書はpython実践データ分析100を使用しています。
ネットでは、cascade_file を "haarcascade_eye.xml"に変更すればできると記載されていたので、顔認識のプログラムのcascade_file = "haarcascade_frontalface_alt.xml"をcascade_file "haarcascade_eye.xml"に変更しました。

自分で書いたソースコード
cascade_file = "haarcascade_eye.xml"
cascade = cv2.CascadeClassifier(cascade_file)

検出
img = cv2.imread("img/img10.jpg")
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
eye_list = cascade.detectMultiScale(gray, minSize=(50, 50))

検出した目に印を付ける
for (x, y, w, h) in eye_list:
color = (0, 0, 225)
pen_w = 3
cv2.rectangle(img, (x, y), (x+w, y+h), color, thickness = pen_w)

cv2.imshow("img",img)
cv2.imwrite("temp.jpg",img)
cv2.waitKey(0)

ちなみに正面の顔認識は以下のソースコードで実行したら出来ました

cascade_file = "haarcascade_frontalface_alt.xml"
cascade = cv2.CascadeClassifier(cascade_file)

検出
img = cv2.imread("img/img02.jpg")
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
face_list = cascade.detectMultiScale(gray, minSize=(50, 50))

検出した顔に印を付ける
for (x, y, w, h) in face_list:
color = (0, 0, 225)
pen_w = 3
cv2.rectangle(img, (x, y), (x+w, y+h), color, thickness = pen_w)

cv2.imshow("img",img)
cv2.imwrite("temp.jpg",img)
cv2.waitKey(0)

実現したいこと
エラー文の意味を詳しく教えてもらい、目の認識を実現したい。

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

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

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

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

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

guest

回答1

0

cv2.CascadeClassifier() に渡したファイルは存在していますか?
cv2.CascadeClassifier("haarcascade_eye.xml") と指定した場合、カレントディレクトリにその名前のファイルがないとエラーになります。

cv2.data.haarcascades 以下のディレクトリにカスケードの XML ファイルがあるので、以下のように変更して見てください。
正常に読み込めたかどうかは empty() が False かどうかで判定できます。

python

1cascade_file = "haarcascade_eye.xml" 2cascade = cv2.CascadeClassifier(cascade_file)

python

1import os 2 3import cv2 4 5cascade_path = os.path.join(cv2.data.haarcascades, "haarcascade_eye.xml") 6cascade = cv2.CascadeClassifier(cascade_path) 7assert not cascade.empty(), f"カスケードパスの読み込みに失敗 {cascade_path}"

投稿2020/03/27 08:30

編集2020/03/27 08:32
tiitoi

総合スコア21956

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問