zoukankan      html  css  js  c++  java
  • 【python人脸识别】使用opencv识别图片中的人脸

    概述:

    OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉库

    为什么有OpenCV? 计算机视觉市场巨大而且持续增长,且这方面没有标准API,如今的计算机视觉软件大概有以下三种:
    1、研究代码(慢,不稳定,独立并与其他库不兼容)
    2、耗费很高的商业化工具(比如Halcon, MATLAB+Simulink)
    3、依赖硬件的一些特别的解决方案(比如视频监控,制造控制系统,医疗设备)这是如今的现状,而标准的API将简化计算机视觉程序和解决方案的开发,OpenCV致力于成为这样的标准API。
    OpenCV致力于真实世界的实时应用,通过优化的C代码的编写对其执行速度带来了可观的提升,并且可以通过购买Intel的IPP高性能多媒体函数库(Integrated
    Performance
    Primitives)得到更快的处理速度。右图为OpenCV与当前其他主流视觉函数库的性能比较。
    -------百度百科

    所以说opencv就是做图像处理的,而我们要实现的人脸识别,opencv库是必不可少的。
    原理:opencv是以图片中心为初始点,以一个缩放因子进行慢慢的缩放,在范围内进行识别,缩放因子必须适宜,太大可能会导致识别不出来

    1、下载库

    pip install -i https://pypi.tuna.tsinghua.edu.cn/simple opencv-python
    

    2、引入依赖

    opencv的引入不是直接引入opencv,而是引入cv2

    import cv2
    

    3、代码

    my = cv2.imread('img/my.jpg')
    face_detector = cv2.CascadeClassifier("haarcascade_frontalface_alt.xml")
    faces = face_detector.detectMultiScale(my)
    for x,y,w,h in faces:
        cv2.rectangle(my,pt1=(x,y),pt2=(x+w,y+h),color=[0,0,225],thickness=2)
    cv2.imshow("my",my)
    cv2.waitKey(0)
    cv2.destroyAllWindows()
    

    注意: haarcascade_frontalface_alt.xml文件时python安装目录下Libsite - packagescv2data,需要将该文件复制到项目内,不复制的话需要绝对路径。
    问题:
    描述:当图片太大或者分辨过高时,可能会遇到只能显示图片的部分
    解决:加入代码 my = cv2.resize(my,None,fx=0.5,fy=0.5)或者cv2.namedWindow('my', cv2.WINDOW_NORMAL) 不过有其他显示问题,可能会导致图片显示变形

    源代码:

    my = cv2.imread('img/my.jpg')
    my = cv2.resize(my,None,fx=0.5,fy=0.5)
    # 人脸特征数据的数据包
    face_detector = cv2.CascadeClassifier("haarcascade_frontalface_alt.xml")
    # 图片进行人脸数据对比
    # scaleFactor:缩放因子,默认1.3,
    # minNeighbors:最小邻居,默认为3
    faces = face_detector.detectMultiScale(my)
    # print(faces)
    for x,y,w,h in faces:
        # pt1:人脸左上角点
        # pt2:人脸右下角点
        cv2.rectangle(my,pt1=(x,y),pt2=(x+w,y+h),color=[0,0,225],thickness=2)
    # cv2.namedWindow('my', cv2.WINDOW_NORMAL)
    cv2.imshow("my",my)
    cv2.waitKey(0)
    cv2.destroyAllWindows()
    

    效果图:

    效果图


    作者

    1、作者个人网站
    2、作者CSDN
    3、作者博客园
    4、作者简书

  • 相关阅读:
    SQL Server 2005 数据定义语言触发器(Data Definition Language Triggers)[翻译]
    sqlserver 存储过程例子
    微软CEO鲍尔默:科技产业终将成为经济救世主
    poj:2689用筛选法选素数求区间[L,U]的所有素数
    ZOJ Problem Set 1002 Fire Net
    去除多余括号
    模板元编程:求N的阶乘
    算法导论10.2习题
    奇数阶魔方算法
    TSQL 编程常用例子
  • 原文地址:https://www.cnblogs.com/lomtom/p/12368737.html
Copyright © 2011-2022 走看看