准备工作:找到分类器:
方法:安装opencv软件包,或者把此文件放到根目录
1.用pip安装的opencv不带分类器,所以要下载完整版的,可去官网下载安装,分类器位置在
opencvuildetchaarcascadeshaarcascade_frontalface_alt_tree.xml
官网地址点这里: https://github.com/opencv/opencv
二 代码实现
import cv2 as cv # 人脸检测 def face_image(src): gray = cv.cvtColor(src, cv.COLOR_BGR2GRAY) #配置人脸检测器的路径 face_detector = cv.CascadeClassifier(r".haarcascade_frontalface_alt_tree.xml") #多空间进行人脸检测 ''' 第二个参数是移动距离, 第三个参数是识别度,越大识别读越高,如果误检测较多,一般把数值调高 ''' faces = face_detector.detectMultiScale(gray, 1.01, 1) for x, y, w, h in faces: # 后两个参数,一个是颜色,一个是边框宽度 '(x,y)表示起点坐标;w,h分表表示宽,高' cv.rectangle(src, (x, y), (x + w, y + h), (0, 0, 255), 2) cv.imshow("result", src) src = cv.imread("peoples.jpg") cv.imshow("before", src) face_image(src) cv.waitKey(0) cv.destroyAllWindows()
三 视频人脸识别
代码
import cv2 as cv # 人脸检测 def face_image(src): gray = cv.cvtColor(src, cv.COLOR_BGR2GRAY) #配置人脸检测器的路径 face_detector = cv.CascadeClassifier(r".lbpcascade_frontalcatface.xml") #多空间进行人脸检测 ''' 第二个参数是移动距离, 第三个参数是识别度,越大识别读越高,如果误检测较多,一般把数值调高 ''' faces = face_detector.detectMultiScale(gray, 1.5, 1) for x, y, w, h in faces: # 后两个参数,一个是颜色,一个是边框宽度 '(x,y)表示起点坐标;w,h分表表示宽,高' cv.rectangle(src, (x, y), (x + w, y + h), (0, 0, 255), 2) cv.imshow("result", src) #启动媒体设备 capture=cv.VideoCapture(0) cv.namedWindow('result',cv.WINDOW_AUTOSIZE) while(True): ret,frame=capture.read() frame = cv.flip(frame, 1) c = cv.waitKey(10) if ret: face_image(frame) #输入esc退出 if c==27: break cv.destroyAllWindows()
效果:
略