【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、下载库

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

2、引入依赖

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

  1. import cv2

3、代码

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

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

源代码:

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

效果图:

效果图


作者

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

发表评论

表情:
评论列表 (有 0 条评论,97人围观)

还没有评论,来说两句吧...

相关阅读

    相关 opencv人脸识别

    我的劳动成果。 1.成功安装了opencv ,可是它还要编译。我放弃。 2.成功训练自己的人脸分类器。(虽然数据是别人的,算法也是系统写好的,图形库也是别人调好的)虽然识别

    相关 opencv人脸识别

    opencv人脸识别: 首先我们来简单的讲一下人脸识别流程:这里采用的是vs2017+opencv3.3扩展库 1、进行人脸检测 2、识别器训练与分类 3、人脸检测