共计 1232 个字符,预计需要花费 4 分钟才能阅读完成。
2001年viola和jones发表的论文《Robust Real Time Object Detection》是人脸检测的一个里程碑,用该方法识别图片或者视频中的人脸有比较高的检测率,不过人脸的姿势(非正脸),光照等其他因素的影响还是比较严重的影响到了检测率。
下面我讲我浅薄的理解写下来,如果有误,还请大家指正:
1、使用Haar-like特征做检测;
2、使用积分图对Haar-like特征值求解加速;
3、使用AdaBoost算法训练区分人脸和非人脸的强分类器;
4、使用筛选式级联把强分类器级联到一起,提高准确率。
详细的细节可以参考下面的几篇文章:
《Robust Real Time Object Detection》
《Rapid Object Detection using a Boosted Cascade of Simple Features》
《基于 AdaBoost 算法的人脸检测》
计算出海量的矩形特征后,如何区分出哪些矩形特征才是对分类器有效?
对一个特征而言,是否有效,要看对所有样本而言(正样本和负样本),该特征值能否有明显的区分度,能够以较大的概率区分出样本中的正样本或负样本。
MATLAB2012b以上的版本和opencv都集成了Haar-like人脸检测相关的函数,下面简单展示下用opencv-Python调用函数的实现:
# get frame from Video
import cv2
imagePath1 = "222.jpg"
im = cv2.cv.LoadImage(imagePath1)
thumb = cv2.cv.CreateImage((im.width / 2, im.height / 2), 8, 3)
cv2.cv.Resize(im, thumb)
cv2.cv.SaveImage("222_1.jpg", thumb)
imagePath = "222_1.jpg"
faceCascade = cv2.CascadeClassifier("./haarcascade_frontalface_alt2.xml")
image = cv2.imread(imagePath)
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
faces = faceCascade.detectMultiScale(
gray,
scaleFactor=1.15,
minNeighbors=5,
minSize=(5, 5),
flags=cv2.cv.CV_HAAR_SCALE_IMAGE
)
print "Found faces!".format(len(faces))
for(x, y, w, h) in faces:
cv2.rectangle(image, (x, y), (x+w, y+h), (0, 255, 0), 2)
cv2.imshow("Faces found", image)
cv2.waitKey(0)
正文完
请博主喝杯咖啡吧!
杨总监新作,人脸认识一定要顶一下
@admin
@gegey 你这是不是开通邮箱提醒了,我这边回复你秒回
擦,打错字了,人脸识别
@admin 哥是不是很帅!
@gegey 21新世纪帅锅
@admin 还要请村长继续带路啊!
@gegey python你现在用的很666了
如果你对本站的文章有疑问可以邮件给我,点击该站点公告就可以发送邮件