这期内容当中小编将会给大家带来有关怎么在Python中利用OpenCV和Adaboost实现人脸识别功能,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。
首先讲讲需要用到的新函数:
CascadeClassifier()
函数,导入分类器
cv2.CascadeClassifier('xxxxx.xml') #haarcascade_frontalface_alt.xml脸部识别文件 #haarcascade_eye.xml眼部识别文件
函数的参数是xml完整路径(具体看你的opencv安装在哪里的,在opencv\sources\data\haarcascades下面),xml文件中是封装好的算法
detectMultiScale()
函数,进行识别
detectMultiScale(image,scaleFactor,minNeighbors,flags,minSize,maxSize)
最终返回值为识别出的矩阵框[x, y, w, h],(x,y)左上角起始坐标,w宽,h高
image:用于检测的图像
scaleFactor:前后两次相继的扫描中,搜索窗口的比例系数.例如1.1指将搜索窗口依次扩大10%。图片小的时候,比例系数尽量小能提高准确率
minNeighbors:构成检测目标的相邻矩形的最小个数。一般使用2or3,为0时返回所有的被检候选矩形框。
rectangle()
函数,在图片上画矩阵
cv2.rectangle(image,(x,y),(x+w,y+h),(0,255,0),2)
image是原始图片
(x,y)是矩形左上角
(x+w,y+h)是矩形右下角
(0,255,0)是矩形的BGR颜色, 为红色
2, 是绘制矩形的线宽
程序逻辑:
导入Haar级联分类器算法,读入要处理图片,将图片变成时候的大小,用detectMultiScale()函数先识别出人脸,在原图上框出,然后提取出识别出的人脸矩形框,在人脸矩形框内识别出眼睛,在原图上框出,展示出识别完的图像。
完整程序及注解:
import cv2 face_cascade = cv2.CascadeClassifier('D:\opencv\sources\data\haarcascades/haarcascade_frontalface_alt.xml') eye_cascade = cv2.CascadeClassifier('D:\opencv\sources\data\haarcascades/haarcascade_eye.xml') img1 = cv2.imread('face1.png') img = cv2.resize(img1,(240,320),interpolation=cv2.INTER_LINEAR) faces = face_cascade.detectMultiScale(img,1.2,2) for (x,y,w,h) in faces: cv2.rectangle(img,(x,y),(x+w,x+h),(255,0,0),2)#用颜色为BGR(255,0,0)粗度为2的线条在img画出识别出的矩型 face_re = img[y:y+h,x:x+w]#抽取出框出的脸部部分,注意顺序y在前 eyes = eye_cascade.detectMultiScale(face_re)#在框出的脸部部分识别眼睛 for (ex,ey,ew,eh) in eyes: cv2.rectangle(face_re,(ex,ey),(ex+ew,ey+eh),(0,255,0),2) cv2.imshow('img',img) key = cv2.waitKey(0) if key==27: cv2.destoryWindow('img')
上述就是小编为大家分享的怎么在Python中利用OpenCV和Adaboost实现人脸识别功能了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注亿速云行业资讯频道。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。