OpenCVによる顔認識

空港やiPhoneなどで、顔認証が使われておりますが、
写真や動画などから簡単に顔認識ができるOpenCVについて、ご紹介したいと思います。
まず、『OpenCV』とは、何かを説明します。
OpenCV(正式名称: Open Source Computer Vision Library)は、
オープンソースのコンピューター・ビジョン・ライブラリです。
画像や動画を処理するのに必要な、さまざま機能が実装されており、ライセンスで配布されていることから学術用途だけでなく商用目的でも利用できます。
また、マルチプラットフォームに対応されています。
OpenCVを使うと、フィルター処理や行列演算、物体認識など、さまざまな機能を使うことができ、とても便利です。
サポートOSは、Windows、Linux、Mac OSなど、様々なOSに対応しています。
iOSやAndroidにも対応しており、モバイル端末向けのアプリケーションにも利用できます。
OpenCV 3.0では、以下の言語が公式サポートされています。
- C(既存のI/F(=インターフェース)は残っているが、3.0からメンテナンス対象外)
- C++
- Python
- Java
では、環境構築を行います。
今回は、WinPythonを使用してみます。
WinPythonを使用すると必要なもの一式をWindowsに簡単にインストールできるようです。
以下の2つダウンロードして、準備します
※環境により、32bitをダウンロードしてきてください。
- opencv_python 3.1.0 cp34 cp34m win_amd64.whl
- WinPython-64bit-3.4.4.6Qt5
WinPython Control Panelからwhlファイルを指定してInstall Packagesをクリックすればインストール完了です。
環境により、うまくインストールできない場合、インターネットで調べると多くの情報が出てきますので、参考にしてみてください。
インストールができましたら、動作確認します。
インストールディレクトリ内にあるSpyder.exeを起動します。
以下のコードを貼り付けて動作させてみましょう。カメラが起動したら成功です。
test.py
――――――
import cv2 import time window = "push ESC key to stop this program" if(__name__ == '__main__'): # デフォルトカメラは0 capture = cv2.VideoCapture(0) # キャプチャ処理 while(True): key = cv2.waitKey(1) if(key == 27): print("close.") break # 画像キャプチャ ret, img = capture.read() # 取り込み開始になっていなかったらやりなおし if(ret == False): print("Capture Failed.") break cv2.imshow(window, img) time.sleep(0.050) capture.release() cv2.destroyAllWindows()
――――――
顔認識は、上記の処理を少し修正すれば、動作可能になります。
顔認識のサンプルコードについては、インストールしたOpenCVのフォルダ内にありますので、確認してみてください。
また、他の言語のサンプルコードや画像、動画もありますので、色々な環境を試すにはとても便利です。
今回は、pythonを使用しましたが、他の言語でも、基本的に同じような処理に
なりますので、移行も行いやすいと思います。
使用方法など、詳細な手順や実際の画像など記載していませんが、
インターネット上には、OpenCVに関して、色々な情報がありますので、参考にして使用してみてください。
みなさんも、一度、OpenCVを使用して顔認識を試してみては如何でしょうか。
ホームページ http://www.ois-yokohama.co.jp
facebook https://www.facebook.com/orientalinformationservice/]]>