zoukankan      html  css  js  c++  java
  • 人脸识别(21)

    准备工作:找到分类器:

    方法:安装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()

    效果:

  • 相关阅读:
    install source mysql 5.7.9
    直接复制php的安装目录部署到其他服务器的时候,无法运行
    对硬盘进行分区时,GPT和MBR有什么区别?
    centos添加永久静态路由
    Windows2008R2安装远程桌面终端授权
    nginx搭建的cdn服务器的nginx.conf配置文件
    centos6.6配置vlan三层交换
    ESXI 6.0 嵌套虚拟化 Hyper-v
    VLAN的Hybrid和Trunk端口有何区别
    如何添加使用博客RSS订阅
  • 原文地址:https://www.cnblogs.com/angle6-liu/p/10712980.html
Copyright © 2011-2022 走看看