【OpenCV,PIL,Python】顔認識,画像の貼り付け,resizeの入門サンプルコード。人の顔をニンニクにする。Carnivalパイソンカーニバル。Learning,人工知能,Mac関連の情報を発信します。フォローするホームPython入門Pythonお役立ちTipsMacお役立ちTipsデータサイエンスprocessing.pyお問い合わせホームOpenCV【OpenCV,PIL,Python】顔認識,画像の貼り付け,resizeの入門サンプルコード。人の顔をニンニクにする。PIL顔認識には様々な方法がありますが、今回はOpenCVを使った顔検出。OpenCVはオープンソースの画像(動画)ライブラリ。有名で、機械学習においても利用場面は多いです。OpenCVには日本語版チュートリアルがあるので、読むとよいです。こちらなども参考にしてほしいです→OpenCVとPythonによる機械学習プログラミング画像のresize(リサイズ)やpaste(貼り付け)も行うので、PILを利用します。Pillow(PIL)もドキュメントがあります→https://pillow.readthedocs.io/en/latest/OpenCVでの顔認識にはカスケードファイルを使うカスケードファイルというのは、「人間の顔はこういう特徴があるんですよ」という情報が詰まったファイルです。顔認識、顔検出といっても正面の顔・笑顔・目や身体を把握するものなどがあります。カスケードファイルは以下のGitHubリポジトリからダウンロードすることができます。https://github.com/opencv/opencv/tree/master/data/haarcascadesちなみに、今回のサンプルは正面の顔を対象にしています。haarcascade_frontalface_alt.xmlというファイルしか使わないので、このファイル単体でダウンロードしてもよいです。リンクはこちら→https://raw.githubusercontent.com/opencv/opencv/master/data/haarcascades/haarcascade_frontalface_alt.xmlリンクを開いたら、右クリックして、「別名で保存」を選択してください。するとダウンロードできます。OpenCVのインストール方法OpenCVはpipでインストールすることができます。opencv-pythonなどお試しください。Pillow(PIL)の使い方:今回は画像の貼り付けPillow(PIL)はPythonの画像処理ライブラリです。Pythonで画像を扱う時にはよく使うライブラリです。今回は人の顔を認識し、その顔の部分にニンニクを貼り付けるサンプルコードです。OpenCVとPillow(PIL)のための入門用のサンプルコードなので、深層学習(ディープラーニング)などは利用しません。Pillowなどお試しください。installした一覧が出てきます。OpenCVで顔認識、Pillow(PIL)で画像貼り付けOpenCVでカスケードファイルを利用して、顔認識を行います。画像のリサイズや加工などはOpenCVでもかなりできます。今回は画像に画像を貼り付けること、透過PNGを使うことから、Pillow(PIL)を使用しています。この画像が、こうなります。人の画像(大川さん)もニンニクの画像もフリー素材です。ニンニクの画像は加工しております。テイク4で完成したので、ninniku4.pngという名前になっています。保存するback_im.save('ninniku_ookawa.png')OpenCV,Pillow(PIL)の解説たとえば、上記のPythonコードのファイルをninniku.pyにしたら、そのファイルのディレクトリにhaarcascade_frontalface_alt.xml,ookawa.png,ninniku4.pngがなければなりません。別のディレクトリにあるなら、適切なパスを指定してください。OpenCV、Pillow(PIL)を扱うために、冒頭でインポート。今回、PILからはImageしか使わないので、Imageのみインポートしました。コードの中のコメントを見てもらえればほとんどわかると思います。カスケードファイルを指定して、カスケード分類器を作ります。画像の読み込みはグレースケールで行います(cv2.COLOR_BGR2GRAY)。画像処理系はグレースケールにすることが多いです。画像情報を読み取るためには、必ずしも赤色や青色といったカラー情報は必要ありません。あなたの家族や友人が白黒写真で写っているからといって、その人たちが判別できないなんていうことはありませんよね。必要な特徴をグレースケールで読み取るほうが、余計な情報がなくて済むのです。顔認識に成功すると、サンプルコードではface_listに画像の座標と大きさの情報が格納されています。2次元のリストであることに注意してください。顔認識をして座標と大きさを取得→その箇所に画像を貼り付けという流れになります。次はPILの出番となります。Image.open()で画像を取得します。顔認識の時に取得した座標と大きさにニンニクの画像をリサイズします。背景透過のためにsplit()[3]というオプションをpaste()メソッドに追加していることに注意してください。ninniku4.pngという原本の画像はそのままにしておき、この人の顔に載せるためのニンニク画像は別に保存しています(ninniku4_1.png)。copy()メソッドも、原本を傷つけないためです。画像の貼り付けはpaste()メソッドです。現役エンジニアによる指導2オンラインでのマンツーマン形式の講義3大手企業にも導入されている実践的なカリキュラム★★無料体験レッスン実施中です。パス指定が間違っている時に以下のエラーが出た。automatically.OpenCVにおいて、minSizeに指定した数字の大きさが問題になっていた。顔にモザイクをかける時、モザイクをかけたい画像のサイズ...記事を読む【OpenCV,Python】動画のフレームレート,フレーム数を求めるOpenCVとPythonで動画ファイルのフレームレート,フレーム数を求めるプログラムです。画像にモザイクなどをかけるとき、適切な数字を指定できていなければ以下のようなエラーが出る。手法はSSDではなくYOLO。PythonとOpenCVで画像を切り取る。コメントをキャンセルメールアドレスが公開されることはありません。date*日本語が含まれない投稿は無視されますのでご注意ください。Notebookを編集する際の背景について。背景、background、変更。エラー解決,Anaconda】LightGBMがうまくインストールできないとき。