LINE2019.08.13OpenCVを使った機能として、顔認識や目の認識などがありますが、こういったものを応用して「笑顔シャッター機能」を作ってみたいと思います。笑顔シャッターを切る顔認識をするまずは普通の「顔認識機能」を作っていきます。これは「haarcascade(ハールカスケード)」という分類器を使って行います。分類器は「xml」ファイルなのですが、分類器を持っていない場合は以下のリンクからダウンロードしてください。GitHub.github.comダウンロードしたフォルダの「opencv/data/haarcascades」フォルダ内に分類器があります。ここからは分類器がある前提で話を進めていきます。「main.py」というファイルを作成し、以下のプログラムを作ります。終了処理cap.release()cv2.destroyAllWindows()実際にこのコードを実行してみてください。あなたの顔が認識されて、四角い枠で囲われているはずです。次に「笑顔」を認識します。笑顔を認識するための分類器は「haarcascade_smile.xml」というファイルを使って行いますが、ここで注意が必要になります。この「haarcascade_smile.xml」はネストして使う必要があります。顔認識をした後に笑顔認識する必要があるということです。実はこの笑顔認識は、認識された顔の中の「笑顔の特徴となりうるパーツ」を認識するんです。顔認識を行わずに笑顔認識を行ってしまうと、誤検知だらけになってしまいます。終了処理cap.release()cv2.destroyAllWindows()これで笑顔認識ができました。あとは、「笑顔の特徴と思われるパーツ」の個数によって、笑顔かどうかを判定し、シャッターを切ります。笑顔シャッターを切る笑顔シャッターは先ほどのプログラムに条件分を付け加えるだけなので、簡単です。終了処理cap.release()cv2.destroyAllWindows()今回は「笑顔パーツ」が3つ以上あれば笑顔シャッターを切ることにしました。疑似カラー処理とは、白黒画像やその他の色のない画像に疑似的に色をつける処理を指します。サーモグラフィカメラがそうです。サーモグラフィでは赤外線の波長を読み込むため、疑似的な色をつけています。ヒストグラムは、画像内の画素値の度数分布を表したもので、画像の大まかな特徴や偏りを調べるためのものです。2つの画像はフリー画像ですので、ご自由にダウンロードしてください。今回はこの2つの画像を使用します。普通に顔認識を行なっていきます。速度が遅いので、100カウント分のデータを取ることにします。実際に算出した平均値のデータは、「51.94ms」となりました。前提として、画像の幾何学変換では以下の数式が成り立ちます。行う記事を公開しましたが、今回は「RGB成分」のどれか1つだけに反映させる方法を紹介します。今回使用する画像はこちらです。コメントをキャンセルメールアドレスが公開されることはありません。R1カテゴリーJavaJavaFXJavaScriptPythonRこのサイトの管理人IT系だんしプログラミングが大好きな人。趣味でゲームやツール製作をしながら、プログラミング記事を書き続けています。