【ラズパイ】OpenCVで顔検出してみた

 

ラズパイとOpenCVを使って、顔を検出したら写真を撮るようなコードをPythonで書いてみました。

 

usbカメラでなく、ラズパイのカメラを使っています。

ラズパイカメラだと写真撮影にはpicameraというライブラリを使う方法もありますがコードが少し複雑になります。

この記事では、picameraを使わずにシンプルにOpenCVで書いて行きます。

 

スポンサーリンク

コード

 

なぜかラズパイカメラだと反転するので、最初に上下反転する処理を入れています。

キャスケードファイルは、人の顔を認識するためのファイルを指定します。

以下のサイトからファイルをダウンロード。

https://github.com/opencv/opencv/tree/master/data/haarcascades

pythonのコードと同じディレクトリに置いて実行。

顔を検出したら、写真を保存して3秒待ちます。

 

以下のエラーが発生する場合はカスケードファイルがダウンロードしてあるか、ファイル名があっているか確認しましょう。

OpenCV Error: Assertion failed (!empty()) in detectMultiScale,

error: (-215) !empty() in function detectMultiScale

 

実行結果

 

撮影した画像はこんな感じ。

ipadに映った顔を認識してますね。

 

フレームを表示する

 

ファイル出力だと数が多くなるので、ディスプレイにフレームを表示するように改造してみたいと思います。

 

フレームを表示するときはSSHやVNCなどのリモート実行では表示されないので注意してください。

実行すると以下のようなエラーが出ます。

 

  • 顔を検出しても、しなくてもフレームをディスプレイに表示する
  • 「q」が押されたら終了

 

 

 

こっちの方が直感的で分かりやすいと思います。

 

おわり。

 

参考