0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Cascade検出器のインストール方法と使ってみての感想

Last updated at Posted at 2020-10-01

今回は顔検出に使うCascade検出器のインストール方法について紹介したいと思います。

実行環境

MacOS, Python3.6(anaconda), VSCode

Cascade検出器のインストール手順

Githubのレポジトリの中にある必要なCascadeファイルを選ぶ
②そのファイルを開き、Rawというところをクリック
③開いた画面で、右クリックをして、好きな場所に保存する

こういった手順になります。

今回参考にさせてもらった記事はこちらになります。
Python, OpenCVで顔検出と瞳検出(顔認識、瞳認識)

実装してみての感想


xml_path_list = ["./haarcascade_frontalface_default.xml", 
               "./haarcascade_frontalface_alt.xml",
               "./haarcascade_frontalface_alt_tree.xml",
               "./haarcascade_frontalface_alt2.xml"]

今回は、この4つを使おうと思ったのですが、**"./haarcascade_frontalface_alt_tree.xml"**だけはファイルサイズが大きすぎてインストールできなかったので、残りの3つを使いました。

defaultが1番精度は良くなかったかなと思います。
altは顔じゃない部分までを余分に認識していることがあるという印象で、alt2は顔なのに認識していないことがあるという印象でした。

顔を四角で囲む方法

今回は顔を検出した場所を四角で囲むようにしたので、その方法も記載しておきます。


if len(face_points) == 0:
    quit()
for x, y, width, height in face_points: # 顔領域の座標点取得
    color = (0, 0, 100)
    pen_w = 9
    cv2.rectangle(img, (x, y), (x+width, y+height), color, thickness = pen_w)
    cv2.imwrite('mosaic' + str(mosaic_num) + str(cnt) + '.jpg', img)    # 画像を保存 

まず、if文を使い、detectMultiScaleで顔の検出ができているかを判定します。
できていなければ、そこで終わりです。

そして、四角で囲むコードはfor文の中にあります。
cv2.rectangleでどのような線で囲むかを指定します。

ちなみに、colorとpen_w四角の色と太さになります。

まとめ

今回はCascade検出器のインストール方法について説明していきました。
自分で顔検出のコードを書かなくても自動で検出してくれるので便利ですよね。
自分も初めての実装ではこちらを使わせてもらいました。

さらに、四角で囲むという実装もできました。これで顔がきちんと検出できているのかを一目で判断できるので便利ですね。
画像処理は実行したらすぐにその結果を見れるので楽しいなと感じました。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?