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

        OpenCV的全称是Open Source Computer Vision Library,是一个跨平台的计算机视觉库。
        OpenCV可用于解决如下领域的问题:增强现实、人脸识别、手势识别、人机交互、动作识别、运动跟踪、物体识别、图像分割、机器人。
        本篇文章将讲述使用Python和OpenCV提供好的人脸分类模型实现人脸检测

    配置环境

    Python 3
    Opencv (pip install opencv-python 会自己安装cv2和numpy模块 可以使用cmd中 python-import cv2 再次import numpy 没提示错误就说明装好了)
    人脸分类模型 下载地址 该文件夹下都下载下来。github下载文件夹文件的方法
    代码实现

    #coding=utf-8
    #图片检测 - OpenCV版本
    import cv2
    import time
    filepath = "../../face_photos/yiqi.jpg"
    # OpenCV人脸识别分类器
    classifier = cv2.CascadeClassifier(
        "data/haarcascade_frontalface_default.xml")

    #记下 程序开始时间
    t=time.time()
    img = cv2.imread(filepath)  # 读取图片
    gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)  # 转换灰色
    color = (0, 255, 0)  # 定义绘制颜色
    # 调用识别人脸
    faceRects = classifier.detectMultiScale(
        gray, scaleFactor=1.2, minNeighbors=3, minSize=(32, 32))
    if len(faceRects):  # 大于0则检测到人脸
        for faceRect in faceRects:  # 单独框出每一张人脸
            x, y, w, h = faceRect
            # 框出人脸
            cv2.rectangle(img, (x, y), (x + h, y + w), color, 2)

    print('运行时间{}'.format(time.time()-t))
    cv2.imshow("image", img)  # 显示图像
    cv2.waitKey(0)  #等待按键
    #cv2.destroyAllWindows()
    time.sleep(5)

        1
        2
        3
        4
        5
        6
        7
        8
        9
        10
        11
        12
        13
        14
        15
        16
        17
        18
        19
        20
        21
        22
        23
        24
        25
        26
        27
        28
        29

    效果图

    所用时间0.15s左右 速度较快
    在这里插入图片描述
    更改路径

    里面只需要将 filepath后面的路径换成需要检测人脸的照片
    将classifier 后面的路径 改成 上面提到的人脸检测模型的路径
    分类器参数说明

    分类器classifier.detectMultiScale(gray, scaleFactor=1.2, minNeighbors=3, minSize=(32, 32))参数说明:

    gray:转换的灰图

    scaleFactor:图像缩放比例,可理解为相机的X倍镜

    minNeighbors:对特征检测点周边多少有效点同时检测,这样可避免因选取的特征检测点太小而导致遗漏

    minSize:特征检测点的最小尺寸
    补充

    还可以画出脸部的部分器官
    这个是推算出来的 并不是很准确

    # 左眼
            cv2.circle(img, (x + w // 4, y + h // 4 + 30), min(w // 8, h // 8),
                        color)
            # #右眼
             cv2.circle(img, (x + 3 * w // 4, y + h // 4 + 30), min(w // 8, h // 8),
                        color)
            #嘴巴
            cv2.rectangle(img, (x + 3 * w // 8, y + 3 * h // 4),
                         (x + 5 * w // 8, y + 7 * h // 8), color)

        1
        2
        3
        4
        5
        6
        7
        8
        9

    其他

    其他人脸识别模块介绍 https://blog.csdn.net/Nirvana_6174/article/details/89599441

        欢迎加入人工智能-人脸识别 技术交流群 894243022
    ---------------------
    作者:nie_hen_6174
    来源:CSDN
    原文:https://blog.csdn.net/Nirvana_6174/article/details/89598425
    版权声明:本文为博主原创文章,转载请附上博文链接!

  • 相关阅读:
    windows2008下载
    js代码格式化
    javascript小实例【第二课时笔记】
    学习CSS的一些有效资源
    javascript小实例【第一课时笔记】
    关于HTML5的一些基础知识
    javascript小实例【第三课时笔记】
    c#缓存介绍(转)
    [C#] String与string的区别
    Asp.Net Cache缓存使用代码
  • 原文地址:https://www.cnblogs.com/pengzhi12345/p/11180280.html
Copyright © 2011-2022 走看看