人脸识别(21)

准备工作:找到分类器:

方法:安装opencv软件包,或者把此文件放到根目录

1.用pip安装的opencv不带分类器,所以要下载完整版的,可去官网下载安装,分类器位置在

  opencv\build\etc\haarcascades\haarcascade_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()

 

效果:

 

posted @ 2019-07-15 10:30  柳帅  阅读(313)  评论(0编辑  收藏  举报
//替换成自己路径的js文件