目录
1、灰度转换
2、引用opencv官方提供的人脸训练模型
3、绘制方框(用于框住人脸)
4、效果及完整代码:
5、检测多张人脸:
学习链接:
# 灰度转换
gary = cv.cvtColor(img,cv.COLOR_BGR2GRAY)
# opencv官方提供的数据集
face_detect = cv.CascadeClassifier('D:/opencv/opencv/sources/data/haarcascades/haarcascade_frontalface_alt2.xml')
这个文件opencv需要去官网下载,我这里安装在D盘的opencv文件下。文件夹名称不要包含中文,否则运行报错。
#
face = face_detect.detectMultiScale(gary,1.01,5)
#绘制方框
for x,y,w,h in face:
cv.rectangle(img,(x,y),(x+w,y+h),color=(0,0,255),thickness=2)
#显示图片
cv.imshow('res',img)
具体不太懂,可以百度一下
这样胡歌的脸就识别出来啦!不过,图中把手指也识别成了人脸。
修改:将图中划红短线部分1.01改为1.1之后,就没有了,这个类似识别精度。另外划长红线部分修改了图片的大小,以便显示。
要实现检测多人,只需见图片更换即可。同时可以限制方框的大小(100,100),(300,300),超出范围的将不检测。
完整代码:
import cv2 as cv
def face_detect_demo():
# 灰度转换
gary = cv.cvtColor(img,cv.COLOR_BGR2GRAY)
# opencv官方提供的数据集
face_detect = cv.CascadeClassifier('D:/opencv/opencv/sources/data/haarcascades/haarcascade_frontalface_alt2.xml')
#
face = face_detect.detectMultiScale(gary,1.1,5,0,(100,100),(300,300))#限制检测大小
for x,y,w,h in face:
cv.rectangle(img,(x,y),(x+w,y+h),color=(0,0,255),thickness=2)
resize_img = cv.resize(img, dsize=(500, 500))
cv.imshow('res', resize_img)
#图片读取
img = cv.imread("C:\\Users\\Administrator\\Desktop\\faces.jpg") #换成含多张人脸的图片
#检测函数
face_detect_demo()
#按q退出显示
while True:
if ord('q')==cv.waitKey(0):
break
#内存
cv.destroyAllWindows()
【一天搞定人脸识别项目!学不会up直接下跪!(python+opencv)】 https://www.bilibili.com/video/BV1Lq4y1Z7dm/?p=7&share_source=copy_web&vd_source=41b4996195171edfeabb41992c07dd65