opencvを使って顔を認識するプログラムを作ったのですが横を向いたときの検出ができません。どのようにすれば検出できすようになりますか?
分類機にhaarcascade_frontalface_default.xmlを使用しています。VScodeを使用しており、pythonを使っています。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答2件
0
OpenCV のカスケード検出器について
横顔用のカスケードモデルは OpenCV にはありません。
自分で横顔画像のデータを大量に集めて学習する必要があると思います。
OpenCV - カスケード分類器 CascadeClassifier で画像から顔や目を検出する方法について - pystyle
顔検出ができる他のライブラリ
他の顔検出ができるライブラリを使う手もあります。
OpenCV のカスケード検出器は HOG 特徴量ベースなので、CNN ベースのこちらのほうが検出率もいいです。
Python - 顔認識ライブラリ Face Recognition で顔検出を行う方法 - pystyle
python
1import face_recognition 2from IPython.display import display 3from matplotlib import pyplot as plt 4from PIL import Image, ImageDraw 5 6# 画像を読み込む。 7img = face_recognition.load_image_file("face.jpg") 8 9# 画像から顔の領域を検出する。 10face_locs = face_recognition.face_locations( 11 img, model="cnn", number_of_times_to_upsample=1 12) 13 14 15def draw_faces(img, locs): 16 img = Image.fromarray(img) 17 draw = ImageDraw.Draw(img, mode="RGBA") 18 19 for top, right, bottom, left in locs: 20 draw.rectangle((left, top, right, bottom), outline="lime", width=2) 21 22 return img 23 24 25ret = draw_faces(img, face_locs) 26ret.save("result.png")
投稿2020/08/27 15:49
編集2020/08/27 15:50総合スコア21956
0
haarcascade_frontalface_default.xml
これは正面向きの顔の認識用でしょうから,横向きが検出できないのは仕方ない(というかむしろ正解)のではないでしょうか.
横向きの顔を検出したいならば,横向きの顔を学習したデータを用意する必要があるのではないかと思います.
投稿2020/08/27 06:56
総合スコア11996
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/08/27 07:17
2020/08/27 07:37
2020/08/27 07:53
2020/08/27 08:23
2020/08/27 09:08
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/08/31 02:32
2020/08/31 02:37
2020/08/31 03:57
2020/08/31 03:59
2020/08/31 04:14