【OpenCV】カスケード分類器で顔認識と黒塗り処理を行うプログラム
説明
OpenCVが公開しているカスケード分類器を利用して顔認識を行い、検出した顔を黒塗り処理するプログラムを作りました。
処理の流れ
- USBウェブカメラから動画を読み込む
- カスケード分類器で顔を検出する
- 顔が検出できた場合はカスケード分類器が返した座標を元に黒塗り処理を行う (顔が検出できなかった場合は画面全体に黒塗り処理を行う)
- テキストを書き加える(Detecting, Non detecting)
- 処理したフレームを保存する
- 最初に戻る
- qキーが押されるまで以上の処理を繰り返し、保存したフレームを動画として書き出してプログラムを終了する
詳細
黒塗り処理にはOpenCVの長方形を描画するcv2.rectangle関数を、テキストを書き加えるのにはcv2.putText関数を使いました。
cv2.rectangle関数を利用した際、日本語フォントを使うと文字化けを起こしたので英語フォントで文字入れをしました。Pillowライブラリなら日本語フォントが使えるので、そちらを利用しても良かったのですが、必須では無かったので画像処理は全体としてOpenCVの機能だけで完結するようになっています。
コードは50行くらいで短いのですが、汚いコードなので公開しません。
Anaconda3 でのエラー Could not load dynamic libary 'cudart64_110.dll'; dlerror: cudart64_110.dll not foundの解決方法
そう。それは、画像認識を試そうとAnaconda3にTensorflowとKerasをインストールした時のことです。正常にインストールできたかを調べるためにKerasをREPLでインポートしてみました。しかし異変はその後すぐに起きました。
>>import Keras
略) Could not load dynamic library 'cudart64_110.dll'; dlerror: cudart64_110.dll not found
(cudart64_100.dllが見つかりません)
なんだこれは…。それは異国の言葉のようにも見えます。そこで僕は、現代のアカシックレコードとも名高い"Google先生"へと質問を投げ掛けてみました。先生によるとこのエラーの原因はCUDA Toolkitなるソフトウェアがインストールされていないからだと言います。僕はそのソフトウェアがあると言う霊峰の頂きへと登ることにしました。霊峰への登山は困難を極めましたが、ついにそのソフトウェアを手に入れることができました。インストールしてみたところ、なんと正常に動くではありませんか! 先生のお言葉は正しかったんだ!
環境
Windows 10 Home 2004 (64bit)
Anaconda3-2020.11-Windows-x86_64
(編集途中)
CUDA toolkitダウンロード先
参考にさせて頂いたサイト