Haar-like(ハールライク)
◉「Haar-like」とは??
顔を判定する方法で有名な方法。
切り取った画像を縦と横の単純な縞模様のパターン(評価器)に
一致するかどうかを判定する方法。
より判定精度を上げるには、大量の顔画像のサンプルが必要になる。
ビッグデータ時代の今だからできる技術。
顔をブロック単位で見ていき、
顔の特徴に近いかどうかを判定する。
特徴は、顔にあたる光と影でできた明暗のパターンを使う。
◉評価器
顔検出に関しては、OpenCVを開発しているインテルが大量の顔画像からの
評価器を作って準備してくれている。
その他、いくつか例としては,
- MITの顔画像データ
- カリフォルニア工科大学のオブジェクト画像データ
などがある。
◉ Haar_like の使い方。
●グレースケールのコード下に、顔検出用の評価器を準備する。
img_gray = cv2.cvtColor(img_resize, cv2.COLOR_RGB2GRAY)
CASCADE_FILE = 'haarcascade_fronttalface_alt.xml'
※それぞれのファイル名(今回はこれ。)
●顔を見つける「検出器」を準備する。
haar_cascade = cv2.CasecadeClassifier(CASCADE_FILE)
●検出器を使って顔を検出する。
detectMultiScale(画像、scaleFactor, minNeighbors, minSize)
⚫︎画像:顔を検出したい画像(入力画像)。
⚫︎scaleFactor:入力画像を縮小する割合。
⚫︎minNeighbors:検出対象となる部分を少しくらい動かしても
判定できるパターンから大きくずれない最低の数。
⚫︎minSize:検出対象の最小サイズ。
<検出器を使って顔を検出するPythonコード>
detection = haar_cascade.detectMultiScale(img_resize, scaleFactor=1.1, minNeightbors=2, minSize=(30, 30))