【コンピュータビジュアル】OpencvのFace Detection using Haar Cascades


【コンピュータビジュアル】OpencvのFace Detection using Haar Cascades
ラベル(スペース区切り):【画像処理】
声明:引用は出典を明記してくださいhttp://blog.csdn.net/lg1259156776/
5つの典型的なhaar-likeの特徴は、なぜ人の顔、人の目を検出することができるのだろうか.【计算机视觉】Opencv中的Face Detection using Haar Cascades_第1张图片
それが与えた経験談は1.the region of the eyes is often darker than the region of the nose and cheeks 2. the eyes are darker than the bridge of the noseしかし、このようなwindowは他の場所で特徴が明らかではありません.では、160000+のfeaturesから最高の特徴をどのように選択すればいいのでしょうか.Adaboostを採用すると言っています.【计算机视觉】Opencv中的Face Detection using Haar Cascades_第2张图片 We select the features with minimum error rate, which means they are the features that best classifies the face and non-face images. 実はadaboostのプロセスで、最小エラー率の特徴を選択し、実際にはエラー画像の重みを高めてclassificationを行い、精度や必要な特徴の数が十分になるまで新しいエラー率と新しい重みを計算します.
したがって,最終的な分類器は実際にはこれらの弱い分類器の重み付け和であり,weakと呼ばれるのは,単独では分類できないかもしれないが,一緒に強い分類器を構成することができるということである.論文では,200個の特徴さえ95%の精度に達できると述べた.
それらは最後に6000の特徴を確立したが、画像の大部分の領域が人の顔ではないことを考慮して、簡単な方法で人があなたに来たかどうかを判断したほうがいい.そうでなければ、直接捨てて、このwindowに対して後続の処理をしないほうがいい.これにより、時間消費をさらに低減することができる.
TLDの分散分類器に似ているため、分散分類器の役割は迅速な第一歩でサンプルの半分を淘汰し、後続の分類器に入るサンプルの数を減少させ、速度の向上に役立つ.
haar-cascade detectionを使用すると、opencvではxmlファイルから訓練されたパラメータを直接インポートし、歩行者の顔検出を先進化し、顔位置に窓を開け、人の目を検出することができます.こうしてeasy:
import numpy as np
2 import cv2
3 
4 face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
5 eye_cascade = cv2.CascadeClassifier('haarcascade_eye.xml')
6 
7 img = cv2.imread('sachin.jpg')
8 gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)


1 faces = face_cascade.detectMultiScale(gray, 1.3, 5)
2 for (x,y,w,h) in faces:
3     cv2.rectangle(img,(x,y),(x+w,y+h),(255,0,0),2)
4     roi_gray = gray[y:y+h, x:x+w]
5     roi_color = img[y:y+h, x:x+w]
6     eyes = eye_cascade.detectMultiScale(roi_gray)
7     for (ex,ey,ew,eh) in eyes:
8         cv2.rectangle(roi_color,(ex,ey),(ex+ew,ey+eh),(0,255,0),2)
9 
10 cv2.imshow('img',img)
11 cv2.waitKey(0)
12 cv2.destroyAllWindows()

【计算机视觉】Opencv中的Face Detection using Haar Cascades_第3张图片
2015-11-05調整記録張朋芸