03-3258-1238
03-3258-1238平日9:00 ~ 18:00(土日祝日除く)
顔検出やバーコード検出は、難しい処理が必要そうだし、自分でやるにはそれなりに勉強しないと難しいのではと感じられるかたは多いのではないでしょうか。 この記事では、そんな初心者の方でもパソコンとUSBカメラさえ用意すれば、1時間ほどで顔検出やバーコード検出が簡単に無料でできるという内容を紹介したいと思います。
本記事の内容をもっと詳しく知りたい方向け。プログラムの基本的なところから、顔検出プログラムに関するコマンド内容まで動画で解説します。
冒頭の紹介と矛盾するように聞こえるかもしれませんが、顔検出やバーコード検出のプログラムは非常に複雑です。 例えば顔認証は「画像の一部分を切り出して、顔かどうかの判断を少しずつ細かくして判別していく方法」や「写真から特徴点を抜き出してその特徴点が顔の特徴と合致するかで判別する方法」など様々ですが、それらの方法を理解して、抽出のためのアルゴリズムを作成するとなるとそれは初心者にはとてもできるものではありません。
では、なぜ顔検出を簡単に実現できるのか? そこで登場するのがライブラリです。ライブラリは、プロフェッショナルが作成した複雑なプログラムをパッキングしたもので、だれでも簡単なコマンドでそのパッキングしたプログラムを使えるようになります。 顔認証のプログラムが入ったライブラリを使えば、“顔認証のプログラムを読みだしてください”とプログラムに書くだけで、複雑なことはライブラリ内に書かれているプログラムがやってくれます。
必要になるのは、以下の4つです。
この中で、初めての方が難しいと感じるのは、”プログラム言語”と”ライブラリ”だと思います。 今回は、あまり難しい話はせずに、書いてある通りに実行したら意外と簡単にできたという体験をしていただければと思います。 世の中には、色々なプログラムやライブラリがありますが、本記事では無料でできる代表的なものとして、プログラムに“Python”、ライブラリに“OPENCV”を使った方法をご紹介していきます。 Pythonは、ビッグデータ解析、機械学習などの分野で人気の高い言語で、シンプルなコード記述とライブラリの豊富さが特徴なので、今回の内容にぴったりです。 そして、OPENCVは、Intelで開発された画像処理関連のライブラリで、今回実施する顔検出をはじめとして様々なことができます。OPENCVは、C言語、C++、Java、Pythonに対応しているため、こちらも今回のPythonを用いた顔検出にはぴったりです。
OpenCVでどんなことができるか興味がある方は、こちらを参照ください。 →Open CV(画像処理ライブラリ)初めてガイド
ここからは、Windowsパソコン、USBカメラを準備したところから、PythonとOPENCVを用いて顔検出を行うところまでを解説します。
まずは、準備として、必要なツールのインストールを行い、その後プログラムを実行します。
Pythonは以下からダウンロードが可能です。 https://www.python.org/downloads/ Downloads のタブを押して、 Windows を選択して、お使いのPCのOSに合わせたバージョンを選択してください。 Winodwsの64bitOSの場合は、“windows x86-64 executable installer”、 Windowsの32bitOSの場合は、“windows x86 executable installer”です。 インストーラーへのリンクをクリックすると以下のようにインストーラーが開きます。 “Add Python3.7 to PATH”にチェックをつけて、 “Install Now”を選択してください。
Pythonでは、pipというコマンドを利用して、簡単にライブラリのインストールをすることができます。 OpenCVのインストールをする場合、まずpipのプログラム自体を最新のものに変更して、その後OpenCVをインストールします。
Windowsに標準で搭載されているコマンドプロンプトを管理者権限で起動してください。 いくつか方法がありますが、ここではWindowsメニューから開く例を示します。 WindowsタブのWindowsシステムツールの中に、”コマンドプロンプト”を右クリックで選択し、”その他”の”管理者として実行”を選択します。 このアプリがデバイスに変更を加えることを許可するか確認されるので、”許可”をクリックします。
以下2つのコマンドを入力してください。
pip install --upgrade pip
以下は、インストールしたPythonのパッケージに入っていたpipが最新バージョンだった場合の例です。 新しいバージョンがある場合は、インストールが成功したという内容のメッセージ[Successfully installed pip-xx.xx.xx]が表示されます。
はまりやすいポイント コマンドプロンプトを権利者権限で実行していないと、「アクセスが拒否されました。」というErrorが出力されます。[Successfully installed pip-xx.xx.xx]が表示されない場合は、コマンドプロンプトを権利者権限で実行しているかをご確認ください。
pip install opencv-python
以下は、実行結果の例です。
ここまでで、プログラムを実行するのに必要な環境が整いました。
ここで、PCとUSBカメラを接続してください。
いよいよ、実際にプログラムを実行して顔検出を行います。 ここでは、すでに用意したサンプルプログラムに対して必要な変更を加えて、実行する部分を説明したいと思います。
以下のファイルをダウンロードするか、以下のプログラムの記述内容をコピーしてtextファイルに張り付けて保存してください。 ファイル: demo_face_detect.zip プログラム記述:
import cv2 face_cascade = cv2.CascadeClassifier(r'$directory\haarcascade_frontalface_default.xml') cap = cv2.VideoCapture(0) while True: ret, img = cap.read() gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) faces = face_cascade.detectMultiScale(gray, scaleFactor=1.3, minNeighbors=5) for x, y, w, h in faces: cv2.rectangle(img, (x, y), (x + w, y + h), (255, 0, 0), 2) face = img[y: y + h, x: x + w] face_gray = gray[y: y + h, x: x + w] cv2.putText(img, 'Face Detect', (20,50), cv2.FONT_HERSHEY_SIMPLEX, 1.2, (0,0,200), 2, cv2.LINE_AA) cv2.imshow('video image', img) key = cv2.waitKey(10) if key == 27: break cap.release() cv2.destroyAllWindows()
上記のプログラムの処理内容を簡単に紹介します。 ①カメラで取得した画像を取り込む ②取り込んだ画像から顔を検出 ③検出した顔の部分に□を追加 ④□を追加した画像を出力
顔検出のサンプルプログラムの詳細 ⇒顔検出プログラムの内容説明動画 記述の内容を理解することで「問題が起きた場合の対応」や「さらにこんなことをしたいという時にどこをどこ変えればいいか」などがわかります。
プログラムの赤字になっている箇所は環境に応じて書き換える必要があります。
face_cascade = cv2.CascadeClassifier(r'$directory\haarcascade_frontalface_default.xml')
使用する顔検出用のライブラリ"haarcascade_frontalface_default.xml"は、Pythonのインストールディレクトリ内に格納されます。ライブラリの格納ディレクトリを$directoryの部分に設定します。 例えば、Pythonのインストールディレクトリが"C:\Users\user\AppData\Local\Programs\Python"の場合は、以下のように設定してください。
face_cascade = cv2.CascadeClassifier(r'C:\Users\user\AppData\Local\Programs\Python\Python37\Lib\site-packages\cv2\data\haarcascade_frontalface_default.xml')
cap = cv2.VideoCapture(0)
数字の部分は、認識されているカメラの番号になります。 例えば、PCにカメラがすでについている(内蔵されている)場合、そのカメラの番号が"0"となり、USBで接続したカメラは、番号が"1"になりますので、プログラムでUSBのカメラを使用する場合は、番号に"1"を設定してください。
プログラムの実行方法には2通りあります。どちらかわかりやすいほうを選択してください。
①で作成したプログラムファイルの拡張子を".py"にしておき、ファイルをダブルクリックしてください。 この時、".py"を実行するプログラムがPythonに設定されている必要がありますが、本記事に記載のある手順でPythonのインストールを行った場合、自動的にそのような設定になります。
コマンドプロンプトを開いて、cdコマンドで、プログラムファイルがあるディレクトリに移動します。 その後、以下のコマンドを実行します(ファイル名が、demo_face_detect.pyの場合)
python demo_face_detect.py
以下の図のように、顔が検出されたら成功です。
プログラムを停止する際には、“Esc”キーを押してください。
いかがだったでしょうか 最後は作業のようになってしまったかと思いますが、ライブラリを使用すればわずか数行のプログラムで顔検出など複雑な処理ができると思っていただけましたでしょうか。 ライブラリは他にもいろいろありますので、USBカメラ×プログラムの組み合わせでバーコードの読み取りや不良の検出などいろいろなことが可能になります。
マシンビジョンに関する用語の解説や、いろいろな産業用ビデオカメラに関する情報が満載
産業から医療に至るまで、Optikronの超小型カメラモジュールは、精密な映像取得を求められる分野で活躍しています。 サイズ別に、S、M、Lと取り揃えており、こちらをご活用いただくことで、幅広い用途・シーンに対応できます。 また、これらはLED光源の追加など、目的に合わせて、カスタマイズ可能です。
極小サイズのカメラが必要な用途には、こちらのSシリーズがおすすめです。 カメラモジュール本体の長さは、ほぼ10円玉の直径レベル。 狭いエリアに入り込むことができるため、取り回しも容易です。
Mシリーズは、HD解像度での動画が撮影できる、最小サイズのCMOSカメラです。 工業用・医療用内視鏡カメラやマシンビジョン、ファクトリーオートメーション(FA)など幅広い用途でご活用いただけます。
小型サイズでありながら、画質はフルハイビジョンに対応しているため、高い画質が要求される用途におすすめです。 Lシリーズは解像度が高いだけでなく、光度が高いことも特徴。 機械やロボット、又は自動システムに統合するだけでなく、単一の装置としても使用可能です。
また、より低価格で短納期の製品が欲しいというお客様にはこちらの「スマートシリーズ」をご紹介しています。
スマートシリーズには、お客様が使いやすいよう標準化された仕様の3つのカメラモジュールをご用意。
v4l2でカメラパラメータを確認
初めてのPythonガイド
初めてのOpenCVガイド
カメラの設定の確認・変更
カメラの設定Windowを簡単に出す
フレームレートの設定・確認方法
USBケーブルの延長方法
高フレームレートカメラ×FPGA BLOB検出の仕組みと検証結果
USBカメラの「ゲイン」設定
カメラの必要な画角
KLV大学マシンビジョンコース
詳細ページ