Project報告的なこと、技術的なことこの広告は、90日以上更新していないブログに表示しています。OpenCV概要Webカメラの映像をウィンドウに映し、バックグラウンドで顔認識を行います。顔を見つけられたら、顔の部分に四角をつけて画像を保存します。画像ファイルから顔認識を行う場合は、前回の記事を参照してください。以下のようにループを組むことでウィンドウにWebカメラの映像を映すことができます。27:break#キャプチャを終了cap.release()cv2.destroyAllWindows()Escキーが押されるまで無限ループでカメラから取得した映像をウィンドウに表示し続けます。このループの中に顔認識の手順を埋め込んでもいいのですが、処理が重くなりカメラ映像のフレームがかなり落ちたので、顔認識は別スレッドで行います。今回は顔認識を行い、顔が存在すれば白い線をつけて保存するFaceThreadというクラスを作成しました。'顔が検出されました。self._frame)threading.Threadのサブクラスを作ることによってpythonでマルチスレッド処理を行うことができます。詳しくは以下のリンクを参照してください。qiita.com画像を保存する時は現在の時間をファイル名としてしています。これによって、以下のようにループの中でFaceThreadを実行すればよいことになります。FaceThread(frame)th.start()FaceThreadが動いていない時はアクティブになっているスレッドはメインスレッドの1つなので、「threading.activeCount()」は1を返します。この時だけFaceThreadを実行することによって、スレッドの数を制限しています。スレッドを使って並列処理することによってかなりフレーム落ちは防げるようになりましたが、まだ時々重くなります。C++を使って処理した方がいいかもしれません。'顔が検出されました。OpenCVでは顔を簡単に認識することができます。API月別アーカイブリンクはてなブログブログをはじめる週刊はてなブログはてなブログProはてなブログをはじめよう!famirrorさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。