Subscribed unsubscribe Subscribe Subscribe

stdmtpy’s blog

技術のシェアを目的にしたものではなく,日記なので間違っている情報やフィクションが含まれています.

OpenCV+Python+WebCamでリアルタイム顔検出するときの処理の分離

 OpenCVを利用して,Webカメラから映像を取得しながらリアルタイムで顔検出のような重たい処理をするにはどうしたらいいのか.

 

 動画を取得するとは,カメラから毎回frameをもらうことになり,

whileを回し続けて表示しているフレームを更新することになる.

 

 

「課題」

 このwhileの中に,顔検出のような処理を入れてしまうと,処理が重たいため,ループが遅くなってしまう.

 

 

「解決策」

マルチスレッドを利用する.

qiita.com

 

メインの処理とは別のスレッドを立てる.

これによって複数の処理を同時に走らせることができるという.

 

これを知るまでは,subprocessやPopen,communicateなどでできるのではないかと思ってこれらについて調べていた.

しかし,何も工夫せずに使った場合のsubprocessでは子プロセスが終わるまで,親プロセスが待機してしまうので,自分が求めていた処理方法とは違っていた.

 

さて,マルチスレッドを利用して,リアルタイムに顔検出をするコードは以下のブログにある.

famirror.hateblo.jp

 

こちらのコードを引用している多くの方が指摘しているように,画面の保存に関しては改善が必要なのには注意. 

 

 

「今後」

顔検出の処理だけでなくアプリケーションとしての処理もマルチスレッドで行えないか検討して行きたい.