PythonのOpenCVを使った顔検出で顔以外を囲まないようにする方法

PythonのOpenCVを使って、顔検出をすると顔以外の場所を顔と検出されてしまいます。そして、検出した後に四角で囲む処理をすると顔以外の部分を四角で囲んでしまうので、それをさせない方法を紹介します。


OpenCVのhaarcascadeファイルのダウンロード方法こちら↓の投稿で紹介しています。

OpenCVを使った顔と目の検出方法 Python

まず、これが顔検出で使う画像になります。

そして、通常のcv2を使った顔検出のプログラミングコードと実行結果の画像が下になります。

cv2を使った顔検出

顔以外にも手の部分も顔と検出されてしまいます


顔以外を囲まないようにする方法

解決策としては顔を検出した中に目を検出できれば、本物の顔として四角の枠で囲みます。

目の位置を検出したとこだけ、四角の枠で囲むようにすると正しく顔の部分が囲まれます。