Python3

Pythonをはじめよう 第6回 cameraサンプルを改良して顔認識

投稿日:

はじめに

前回の第5回でWebカメラの映像をkivyにうまく表示できるようになりました。

今回はこれをさらに改良してOpenCVの顔検出器を使って顔認識を行います。

顔に赤枠を付けたりモザイクをかけたりしますので、画面も少々改良します。

 

顔検出カスケードファイルのダウンロード

OpenCVの顔検出器で利用するカスケードファイルをダウンロードしてきます。

いろいろなファイルがあるのですが、今回は顔正面のファイル「haarcascade_frontalface_alt.xml」を利用します。

次のサイト(GitHub)へアクセスします。

赤枠のhaarcascade_frontalface_alt.xmlをクリックすると次の画面が表示されます。

赤枠のRawを右クリックしてリンク先を保存します。

保存先は、D:\PyDev\GuiKivy としました。

改良したソースファイル

保存先は、D:\PyDev\GuiKivyです。

仮想環境のアクティブ化を忘れずに実行します。env\Scripts\activate

ちょこっと解説

kv言語

・今回、顔認識用とモザイク用の2つのトグルボタンを追加したのですが、カメラ映像の右側に表示させました。

・BoxLayoutを利用して、追加する2つのトグルボタンを縦並びにし(24行目から35行目)、カメラ映像のイメージコントロールと横並びにします。(14行目から35行目)

・追加する2つのトグルボタンは、Playと同じようにフラグのOnOffで利用します。

・トグルボタンはそれぞれ、FaceとMosaicとしました。

pythonコード

・FaceトグルボタンがクリックされたときにFaceフラグを変化させる処理を追加。(54行目から56行目)

・MosaicトグルボタンがクリックされたときにMosaicフラグを変化させる処理を追加。(58行目から60行目)

・FaceフラグかMosaicフラグがTrueの場合の処理を追加します。(75行目から89行目)

・ダウンロードしたカスケードファイルを指定して検出器を作成します。(77行目、78行目)

・カメラ映像をグレースケールに変換します。(80行目)

・顔検出させます。(82行目)

・FaceフラグがTrueの場合、赤枠で顔を囲みます。(86行目、87行目)

・MosaicフラグがTrueの場合、顔にモザイクをかけます。(88行目、89行目)

・モザイクをかける処理を追加します。(107行目から119行目)

・FaceフラグとMosaicフラグの初期化を行います。(129行目、130行目)

 

実行結果

起動すると次の画面が表示されます。

 

PlayしてFaceボタンとMosaicボタンを押してCaptureしたときの画像が次のものです。

証明写真と一緒に顔検出&モザイクがかかりました。赤枠だけやモザイクだけでも動作しますので是非お試しください。

 

最後に

上手く動作して少しニヤニヤしてしまい、その顔が画面に表示されてさらにニヤニヤ。あぶないおっさんの出来上がり。

どんどん面白くなってきました。

ボタンを配置するスペースもまだあるし色々な画像処理を加えてみるのも楽しいかもしれません。

また、多重処理になるのでどのくらいまでレスポンスに耐えられるものなのかも気になるところですね。

 

スポンサードリンク

スポンサードリンク

-Python3
-, , , ,

Copyright© あきらちんの技術メモ , 2023 All Rights Reserved Powered by STINGER.