目录
- # 灰度转换
- 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