使用OpenCV中的haar级联分类器实现人脸识别
·
haar级联分类器
代码实现
# 导入模块
import cv2
#加载一张待检测的人脸(人脸歪着可能检测不到)
img = cv2.imread('face.jpg')
# xml加载有两种方法
# 加载人脸检测的xml(第一种方法)
face_cascade = cv2.CascadeClassifier() # 先实例化一个对象
# 这里是你的xml存放路径!!!(这个是加载人脸识别的引擎)
face_cascade.load('G:\Anaconda3\opencv-master\data\haarcascades\haarcascade_frontalface_default.xml')
# 加载人眼识别的xml(第二种方法)
# 直接加载xml的存放路径
eye_cascade = cv2.CascadeClassifier('G:\Anaconda3\opencv-master\data\haarcascades\haarcascade_eye.xml')
# 开始人脸检测
faces = face_cascade.detectMultiScale(img, scaleFactor=1.3, minNeighbors = 5)
# 先复制一张图片
img1 = img.copy()
# 在检测到的人脸中操作
for x,y,w,h in faces:
# 画出人脸框
img2 = cv2.rectangle(img1, (x,y), (x+w,y+h), (0,255,0),2)
# 找出人脸区域
face_area = img2[y:y+h, x:x+w]
# 在人脸区域检测人眼
eyes = eye_cascade.detectMultiScale(face_area, scaleFactor=1.3, minNeighbors=5)
for ex,ey,ew,eh in eyes:
cv2.rectangle(face_area, (ex,ey), (ex+ew,ey+eh), (0,0,255), 1)
cv2.imshow('img', img2)
cv2.waitKey(0)
cv2.destroyAllWindows()
detectMultiScale:简单介绍
img : 需要检测的图片
scaleFactor:放大倍数
minNeighbors:表示重复识别的次数,值越大,检测的要求越高
输出结果

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐


所有评论(0)