【OpenCV】カスケード分類器で顔認識と黒塗り処理を行うプログラム
説明
OpenCVが公開しているカスケード分類器を利用して顔認識を行い、検出した顔を黒塗り処理するプログラムを作りました。
処理の流れ
- USBウェブカメラから動画を読み込む
- カスケード分類器で顔を検出する
- 顔が検出できた場合はカスケード分類器が返した座標を元に黒塗り処理を行う (顔が検出できなかった場合は画面全体に黒塗り処理を行う)
- テキストを書き加える(Detecting, Non detecting)
- 処理したフレームを保存する
- 最初に戻る
- qキーが押されるまで以上の処理を繰り返し、保存したフレームを動画として書き出してプログラムを終了する
詳細
黒塗り処理にはOpenCVの長方形を描画するcv2.rectangle関数を、テキストを書き加えるのにはcv2.putText関数を使いました。
cv2.rectangle関数を利用した際、日本語フォントを使うと文字化けを起こしたので英語フォントで文字入れをしました。Pillowライブラリなら日本語フォントが使えるので、そちらを利用しても良かったのですが、必須では無かったので画像処理は全体としてOpenCVの機能だけで完結するようになっています。
コードは50行くらいで短いのですが、汚いコードなので公開しません。