在opencv里面有一个自带的人脸识别API,用起来很方便,但是也有很多不足。
在opencv源代码的副本中会有一个文件夹datd/haarcascades。该文件包含了所有opencv的人脸检测的xml文件,这些文件可用于检测静止图像(当然了,其实处理视频文件也是处理一张一张的静态图片。)将这些文件(如图一)放在新建文件夹cascade中,并将这个文件夹放到当前文件夹里面。
从文件名可知这些级联是用于人脸、眼睛、鼻子和嘴的跟踪。这些文件需要正面,直立的人脸图像。然后需要执行一下两句最主要的:
就可以找出人脸了,当然如果需要找到身体,眼睛等,只需要改改相应的路径就可以了。这个API相当于写了一个模板,然后去和未知的图片进行匹配,这样就会导致一个很大的问题,就是一些细小的人脸,或者有点像人脸的图片会检测失败。
当然了,更高级的方法还需要自己去学,不可能一步到位。路漫漫其修远兮!
顺便说一句,今天数字图像处理的分数出来了,我觉得很生气,不管是什么原因,这都不是我应该得的分数,但是这也没办法,唉!谁叫我命苦呢!但是,经过这次考试,我的心也更加坚定了,也知道了一些无法言语的东西。谢谢你们,过年我会给你们多烧点纸钱的。真的谢谢!
附件:
def find_face_picture():
src = cv.imread('hudui.jpg')
cascads = cv.CascadeClassifier('cascades/haarcascade_frontalface_default.xml')
faces = cascads.detectMultiScale(src,1.3,5)
for (x,y,w,h) in faces:
src = cv.rectangle(src,(x,y),(x+w,y+h),(0,255,0),3)
cv.imwrite('C:/Users/31006/Desktop/hudui1.jpg',src)
cv.imshow('hudui',src)
if(__name__=='__main__'):
find_face_picture()
cv.waitKey()
cv.destroyAllWindows()
效果:
领取专属 10元无门槛券
私享最新 技术干货