Pythonによるデータ分析・機械学習ブログ

Pythonによるデータの前処理・グラフ化、機械学習、統計解析、画像処理、Webスクレイピング、自然言語処理の基礎について紹介していきます。

MENU

【第8回】OpenCVを用いた画像内の顔認識・目認識、全身認識

はじめに

OpenCVとはインテルが開発・公開したオープンソースのコンピュータビジョン向けライブラリで、画像処理・画像解析および機械学習等の機能を持つC/C++JavaPythonMATLAB用ライブラリとなっています。

Opencvには以下のような機能があります。

  • グレースケール化
  • 2値化
  • 輪郭の検出
  • 顔検出
  • ノイズ除去
  • テンプレートマッチング

物体認識技術の内、人物検知・検出技術を用いて人流の分析、防犯対策、人物安全対策などを実施するケースが多くなっており、物の認識・検出はOpenCVを用いることが実施できるよういなっています。

本記事では、OpenCVを用いた画像内の顔認識、目認識、全身認識の手法の一例を紹介します。

SAMURAI TERAKOYA

 

1. 顔認識器・目認識器・全身認識器ファイルの用意

今回使用する識別モデルはHaar Cascadeで、物体検出に使われる識別器の1つです。こちらの識別モデルはOpenCVでも扱うことができます。

まずは以下のページから顔認識器である「haarcascade_frontalface_alt.xml」、目認識器である「haarcascade_eye.xml」、全身認識器である「haarcascade_fullbody.xml」を適当なフォルダにダウンロードしてください。

github.com

 

2. 認識対象の画像の用意

今回使用する画像は画像処理のチュートリアルでよく使用されているLennaの写真を用います。

参考:The Rest of the Lenna Story

 

3. 顔認識

それでは顔認識を実施していきます。

以下の例では、cv2.CascadeClassifier()で顔認識ファイルを読み込み、cascade.detectMultiScale(img)で画像に対して顔領域を探索して認識した情報を[左上のx座標(x)、左上のy座標(y)、幅(w)、高さ(h)]で返します。その後、cv2.rectangle()を用いて顔認識した座標に対して四角形を描画しています。

ここで、cv2.rectangle()について紹介します。四角形を描画するcv2.rectangle()は以下の様に用います。

cv2.rectangle(img, pt1, pt2, color, thickness=***)

引数は以下の様になります。

引数 内容
img 対象の画像
pt1 四角形の左上の座標(タプル型)
pt2 四角形の右下の座標(タプル型)
color 線の色、(青, 緑, 赤)の順で記載
thickness 線の太さ

 

それでは顔認識した結果を見てみましょう。出力結果は以下のようになります。顔の部分を四角形で囲われていますね。

 

4. 目認識

続いて目の認識を行います。基本的には顔認識のコードと同じです。ただし、今回は目認識ファイル「haarcascade_eye.xml」を用いるのでその部分だけ異なります。

コード例を以下に示します。

出力結果は以下の様になります。

 

5. 全身認識

続いて全身の認識を行います。基本的には顔認識のコードと同じです。ただし、今回は目認識ファイル「haarcascade_fullbody.xml」を用いるのでその部分だけ異なります。

コード例を以下に示します。

今回は以下の画像を対象に全身認識します。(こちらはアメリカ・ワシントン州にあるオリンピック国立公園で撮影した写真です。)

それでは出力結果を見てみましょう。全身が写っている部分に四角の枠が描画されていて、全身認識されているのがわかると思います。

 

オススメ書籍

Pythonで始めるOpenCV4プログラミング

実践OpenCV4 for Python 画像映像情報処理と機械学習

 

スキル修得&転職

 近年、DXの進展に伴うデジタル人材の需要の高まりに追いついていない状況が続いていると経済産業省がホームページで記載している通り、DX人材、IT人材が不足しているのが現状です。さらにコンピュータの性能向上やAI技術の発展により、よりDX人材、IT人材の需要が高まってきます。さらには、今後の長期間安定して職がある業種とも考えられます。

以下の求人では、IT業界の転職や、IT未経験だけどIT人材を志望する就活を支援してくれます。無料で会員登録もできるので、まずは登録だけでもして様子を見てみてはいかがでしょうか?

▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼

▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲

 

おわりに

本記事では、OpenCVを用いた画像内の顔認識、目認識、全身認識の手法の一例を紹介しました。これらの技術を応用して人流の分析、防犯対策、人物安全対策などを実施することができますが、深層学習を用いた他の手法でも物体認識や物体検出技術があるので、そちらも確認したうえで、活用していきましょう。