本篇内容介绍如何使用opencv,scipy,tensorflow来实现计算机人脸检测。(用一点也是用 =.=)
先声明一下,本篇内容是在图片中的人脸检测,
调动计算机摄像头的人脸识别链接:
链接:https://blog.csdn.net/weixin_43582101/article/details/88913164

效果图:
(图片在百度图片搜索而来,如有侵权请联系我。)

先介绍一下要使用的模块:

SciPy模块。 安装方法 pip install scipy

SciPy是一款方便、易于使用、专为科学和工程设计的Python工具包.它包括统计,优化,整合,线性代数模块,傅里叶变换,信号和图像处理,常微分方程求解器等等.它用于有效计算Numpy矩阵,使Numpy和Scipy协同工作,高效解决问题。

模块名 功能
scipy.constants 数学常量
scipy.integrate 插值
scipy.misc 数据输入输出
scipy.linalg 线性代数
scipy.ndimage N维图像
scipy.optimize 优化算法
scipy.signal 信号处理
scipy.sparse 稀疏矩阵
scipy.spatial 空间数据结构和算法
scipy.stats 统计函数

还有一些我没有往上写,比如scipy.io,看起来有点多了,我们这里只使用scipy中的misc,跟scipy.io一样都是一种用于输入和输出的实用模块,以图像形式保存数组。因为我们需要对图像进行操作,并且需要使用数组对象来做运算,所以将数组直接保存为图像文件非常有用。

tensorflow。 安装方法 pip install tensorflow

这个先不介绍太多,简单说下。

tensorFlow 是目前世界上最受欢迎的开源机器学习框架。
是一种计算图模型,即用图的形式来表示运算过程的一种模型。Tensorflow程序一般分为图的构建和图的执行两个阶段。图的构建阶段也称为图的定义阶段,该过程会在图模型中定义所需的运算,每次运算的的结果以及原始的输入数据都可称为一个节点。

opencv。 安装方法 pip install opencv-python

装起来可能会有点麻烦,有一些版本兼容问题。安装详情可以看这,python3.6安装open-cv

opencv全称是 open source computer vision library (开源计算机视觉库)

OpenCV 使用 C/C++ 开发,同时也提供了 Python、Java、MATLAB 等其他语言的接口 OpenCV 是跨平台的,可以在
Windows、Linux、Mac OS、Android、iOS 等操作系统上运行。 OpenCV
的应用领域非常广泛,包括图像拼接、图像降噪、产品质检、人机交互、人脸识别、动作识别、动作跟踪、无人驾驶等。 OpenCV
还提供了机器学习模块,你可以使用正态贝叶斯、K最近邻、支持向量机、决策树、随机森林、人工神经网络等机器学习算法。

matplotlib。 安装方法 pip install matplotlib
这个应该很熟悉的,最python的绘图库,没啥多说的。下面开始分析代码。

代码解析:

我按照顺序从头到尾来分析这段代码

首先导入库:

from scipy import misc                  # pip install scipy
import tensorflow as tf                 # pip install tensorflow
from face_check import detect_face
import cv2                              # pip install opencv-python
import matplotlib.pyplot as plt         # pip install matplotlib

设置默认值:

minsize = 20                             # minimum size of face     最小尺寸
threshold = [ 0.6, 0.7, 0.7 ]            # three steps's threshold  阈值
factor = 0.709                           #  scale factor            网格参数print('Creating and loading')

tf.Graph().as_default() 表示将这个类实例
tensorflow 里面已经存好了一张默认图,可以使用tf.get_default_graph() 来调用(显示这张默认纸),当你有多个线程就可以创造多个tf.Graph(),就是你可以有一个画图本,有很多张图纸,这时候就会有一个默认图的概念了。

with tf.Graph().as_default():           #将这个类实例,也就是新生成的图作为整个 tensorflow 运行环境的默认图sess = tf.Session(config=tf.ConfigProto(log_device_placement=False))with sess.as_default():pnet, rnet, onet = detect_face.create_mtcnn(sess, None)

detect_face函数之图像金字塔
人脸检测的函数是就是detect_face,这个就是人脸检测的核心的难点了。
这个文件是本地导入的,他和全部代码我在最后会补上githup的链接。

检测人脸,返回人脸框和五个关键点的坐标
detect_face在图像中它们返回包围框和点。创建一个扩展的因素金字塔检测图像

image_path = '1.jpg'
img = misc.imread(image_path)                   #读取图片
bounding_boxes, _ = detect_face.detect_face(img, minsize, pnet, rnet, onet, threshold, factor)
nrof_faces = bounding_boxes.shape[0] #人脸数目
print('找到人脸数目为:{}'.format(nrof_faces))    #返回检测结果
print(bounding_boxes)                           ##返回关键点的坐标

通过上面获取的坐标来在我们的要绘制的图中进行数据标注。
astype(int) 变量类型转换
cv2.rectangle通过对角线来画矩形
cv2.resize图片缩放,参数输入是 宽×高×通道

crop_faces=[]
for face_position in bounding_boxes:               #遍历一下face_position=face_position.astype(int)        #变量类型转换print(face_position[0:4])#通过对角线来画矩形cv2.rectangle(img, (face_position[0], face_position[1]), (face_position[2], face_position[3]), (0, 255, 0), 2)crop=img[face_position[1]:face_position[3],face_position[0]:face_position[2],]#cv2.resize图片缩放,参数输入是 宽×高×通道crop = cv2.resize(crop, (96, 96), interpolation=cv2.INTER_CUBIC )print(crop.shape)                              #查看矩阵结构crop_faces.append(crop)# plt.imshow(crop)plt.show()    #展示plt.imshow(img)  #显示图片
plt.show()

代码从头到尾结束了。其中的from_check import detect_face贴不了
detect_face文件我已经上传到githup

链接:https://github.com/lixi5338619/face_check

基于Opencv的图片人脸检测相关推荐

  1. 基于OpenCV的摄像头人脸检测

    一.选题背景 二.设计目的和意义 三.设计方案 四.特征分类器的选择 4.1 常用人脸检测的特征分类器 4.2 人脸的Haar特征分类器介绍 4.3 人脸的Haar特征分类器使用 五.设计中主要函数介 ...

  2. 基于OpenCV的视频人脸检测

    前言 设备使用带摄像头的笔记本与下载好IP摄像头软件的手机 Python版本为3.8 本人的OpenCV版本为4.5.1.48 本文人脸检测使用的是CV封装好的 haarcascade_frontal ...

  3. 图片人脸检测——Dlib版(四)

    上几篇给大家讲了OpenCV的图片人脸检测,而本文给大家带来的是比OpenCV更加精准的图片人脸检测Dlib库. 往期目录 视频人脸检测--Dlib版(六) OpenCV添加中文(五) 图片人脸检测- ...

  4. dlib php,图片人脸检测——Dlib版(四)

    上几篇给大家讲了OpenCV的图片人脸检测,而本文给大家带来的是比OpenCV更加精准的图片人脸检测Dlib库. 往期目录 dlib与OpenCV对比 识别精准度:Dlib >= OpenCV ...

  5. JavaCV实现图片人脸检测

    之前写的文章 Java + OpenCV 实现图片人脸检测 很多同学反馈说要搭建环境很麻烦,  加上我换了电脑, 本身自己的opencv环境也丢了, 搭建环境的痛实在不想经历第二遍, 所以还是研究了以 ...

  6. OpenCV + python 实现人脸检测(基于照片和视频进行检测)

    OpenCV + python 实现人脸检测(基于照片和视频进行检测) Haar-like 通俗的来讲,就是作为人脸特征即可. Haar特征值反映了图像的灰度变化情况.例如:脸部的一些特征能由矩形特征 ...

  7. 【优秀课设】基于OpenCV的Python人脸识别、检测、框选(遍历目录下所有照片依次识别 视频随时标注)

    基于OpenCV的Python人脸识别.检测.框选 (遍历目录下所有照片依次识别 视频随时标注) 移步: https://blog.csdn.net/weixin_53403301/article/d ...

  8. 图片人脸检测——OpenCV版(二)

    图片人脸检测 人脸检测使用到的技术是OpenCV,上一节已经介绍了OpenCV的环境安装,点击查看. 功能展示 识别一种图上的所有人的脸,并且标出人脸的位置,画出人眼以及嘴的位置,展示效果图如下: 多 ...

  9. 基于深度学习的人脸检测和关键点检测推理实践(OpenCV实现,含代码)

    目录 一.任务概述 二.环境准备 三.实现步骤 3.1 Python推理 3.2 C++推理 3.2.1 环境准备 3.2.2 推理 3.3 Java推理 一.任务概述 最近项目中大量场景需要用到人脸 ...

最新文章

  1. MySQL技术内幕 InnoDB存储引擎 之 InnoDB体系架构
  2. zillow房价预测
  3. Python学习之路—2018/6/20
  4. sql查询时间大于某一时间_查询时间从24分钟到2秒钟:记一次神奇的SQL优化
  5. linux根据pid查看进程,linux根据pid获取进程名和获取进程pid(c语言获取pid)
  6. burp-intrude-Attack-type的使用介绍
  7. JVM专题之分代模型:年轻代、老年代、永久代
  8. LeetCode OJ:Bitwise AND of Numbers Range
  9. 精英计算机主板,精英电脑发布顶级P965芯片组主板
  10. python编程教学视频-【科研资源03】最全Python编程全套系统视频学习教程
  11. 嵌入Windows User Control到ASP.NET web form
  12. Android面试题汇总
  13. 【不三不四的脑洞】大龄程序猿 “奇葩” 相亲记 | 年中总“劫”
  14. 最新小象学院python量化交易项目实战(完整)
  15. 计算机组成与体系架构
  16. [非线性控制理论]6_滑模控制 (sliding mode control)
  17. 通过室内LED光打造世界的标志
  18. 解决系统Warning:W: Possible missing firmware /lib/firmware/rtl_nic/
  19. pyside2出现qt.qpa.plugin: Could not find the Qt platform plugin windows in 错误解决办法
  20. FSSAI的完整形式是什么?

热门文章

  1. RF发射器和接收器电路
  2. Matlab 将cell转换成double格式
  3. 微信公众号二次开发关键字回复图文
  4. RGBA 转 RGB
  5. 12306订票助手 (版本 3.5.0)
  6. 使用FastReport-v5.3.17把fp3文件转为excel文件
  7. 关于STM32外接12MHz晶振的处理办法
  8. slserver生成oracle脚本,sql server t-sql脚本转成oracle plsql
  9. NBIOT模块 BC20 OPENCPU GPS定位
  10. 月薪8K的程序员代码写成这样?网友:看不下去了