OpenCVを用いて領域抽出しているのですが、
顔検出で検出された顔のサイズの幅を何倍、高さを何倍にして、
上半身や下半身を領域抽出することは可能なのでしょうか。
調べてもなんて調べていいか分からず困っています。
分かる方助けてください。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答2件
0
ベストアンサー
顔検出で検出された顔のサイズの幅を何倍、高さを何倍にして、
上半身や下半身を領域抽出することは可能なのでしょうか。
人によって身長は様々なので、顔の大きさから上半身や下半身を検出するのは無理があるのではないでしょうか。
OpenCV の上半身のカスケード検出器の精度で満足できないのであれば、体のパーツごとにセグメンテーションできるモデルを使うか、もしくは姿勢推定モデルで出てきたキーポイントを使うなど考えられますね。
いずれにしてもここでサンプルコードを出せるタスク量ではないので、参考情報として記載しておきます。
追記
先ほどの回答のimg[y:y + faceH * 3, x:x + faceW * 6] というのはどのようなコードを書けば検出されるのでしょうか。
例えば、以下のような感じです。
python
1import cv2 2import os 3 4# 正面の顔を検出するカスケード分類器を作成する。 5cascade_path = os.path.join( 6 cv2.data.haarcascades, "haarcascade_frontalface_default.xml" 7) 8face_cascade = cv2.CascadeClassifier(cascade_path) 9 10# 画像を読み込む。 11img = cv2.imread("sample.jpg") 12 13# グレースケールに変換する。 14gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) 15 16# 検出する。 17faces = face_cascade.detectMultiScale(gray) 18 19# 矩形を画像に描画する。 20for x, y, w, h in faces: 21 cv2.rectangle(img, (x, y), (x + w, y + h), color=(0, 255, 0), thickness=2) 22 23 tl = x - w, y + h # 上半身の左上の座標 24 br = x + 2 * w, y + h * 5 # 上半身の右下の座標 25 cv2.rectangle(img, tl, br, color=(0, 0, 255), thickness=2)
投稿2020/08/24 04:32
編集2020/08/24 05:40総合スコア21956
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2020/08/24 04:40
2020/08/24 04:45
退会済みユーザー
2020/08/24 04:53
2020/08/24 04:58
退会済みユーザー
2020/08/24 05:07
退会済みユーザー
2020/08/24 05:33
2020/08/24 05:40
退会済みユーザー
2020/08/24 05:56
退会済みユーザー
2020/08/24 06:00
2020/08/24 06:52