前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >基于Opencv的图片人脸检测

基于Opencv的图片人脸检测

作者头像
李玺
发布于 2021-11-22 09:32:56
发布于 2021-11-22 09:32:56
82500
代码可运行
举报
文章被收录于专栏:爬虫逆向案例爬虫逆向案例
运行总次数:0
代码可运行

本篇内容介绍如何使用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 是跨平台的,可以在 WindowsLinux、Mac OS、AndroidiOS 等操作系统上运行。 OpenCV 的应用领域非常广泛,包括图像拼接、图像降噪、产品质检、人机交互、人脸识别、动作识别、动作跟踪、无人驾驶等。 OpenCV 还提供了机器学习模块,你可以使用正态贝叶斯、K最近邻、支持向量机、决策树、随机森林、人工神经网络机器学习算法

matplotlib。 安装方法 pip install matplotlib

这个应该很熟悉的,最python的绘图库,没啥多说的。下面开始分析代码。

代码解析:

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

首先导入库:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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

设置默认值:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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(),就是你可以有一个画图本,有很多张图纸,这时候就会有一个默认图的概念了。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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在图像中它们返回包围框和点。创建一个扩展的因素金字塔检测图像

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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图片缩放,参数输入是 宽×高×通道

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019/03/20 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Python 调用摄像头进行人脸识别
之前发过一篇关于对图片上人脸检测的博客。 链接:https://blog.csdn.net/weixin_43582101/article/details/88702254
李玺
2021/11/22
1.6K0
Python 调用摄像头进行人脸识别
干货 | MTCNN实时人脸检测网络详解与代码演示
多任务卷积神经网络(MTCNN)实现人脸检测与对齐是在一个网络里实现了人脸检测与五点标定的模型,主要是通过CNN模型级联实现了多任务学习网络。整个模型分为三个阶段,第一阶段通过一个浅层的CNN网络快速产生一系列的候选窗口;第二阶段通过一个能力更强的CNN网络过滤掉绝大部分非人脸候选窗口;第三阶段通过一个能力更加强的网络找到人脸上面的五个标记点;完整的MTCNN模型级联如下:
OpenCV学堂
2018/12/17
2.4K0
Github项目|几行代码即可实现人脸检测、目标检测的开源计算机视觉库
今天介绍一个简单、易用的开源计算机视觉库,名字是 cvlib,其 Github 地址:
kbsc13
2019/09/25
1.7K0
Github项目|几行代码即可实现人脸检测、目标检测的开源计算机视觉库
opencv:使用dlib进行人脸检测
随着人脸识别,人脸支付,换脸等业务等爆发,多的人都将目光放在人脸方面的研究上。可以说,人脸检测是目前所有目标检测子方向中被研究的最充分的问题之一,它在安防监控,人机交互,金融支付,社交和娱乐等方面有很强的应用价值,也是整个人脸识别算法的第一步。
用户3578099
2019/12/19
1.4K0
利用OpenCV和深度学习实现人脸检测
今天偷点儿懒,就没有及时整理最新的paper,还请各位看官谅解。这里整理了一份前段时间做的小demo,实现献丑了 本文基于OpenCV3.3.1或以上版本(如OpenCV3.4)、DNN模块和face_detector示例实现简单、实时的人脸检测。 往期回顾 [计算机视觉] 入门学习资料 [计算机视觉论文速递] 2018-03-20 [计算机视觉论文速递] 2018-03-18 注: [1]:主要参考Face detection with OpenCV and deep learning这个英文教程
Amusi
2018/04/12
6.9K1
利用OpenCV和深度学习实现人脸检测
OpenCV 人脸检测(一)
OpenCV的Haar级联分类器可以通过对比分析相邻图像区域的特征来判断给定图像或子图像与已知对象是否匹配,从而给图像进行分类。提取图像的细节对产生稳定可靠的分类结果很有用。这些提取的结果被称为特征。特征的数量通常应该比像素数少得多。两个图像的相似程度可以通过它们的特征向量的距离来计算。
用户6021899
2019/09/25
1.9K0
OpenCV 人脸检测(一)
Python-OpenCV人脸检测(代码)
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u012162613/article/details/43523507
李智
2019/05/26
1.9K0
python+opencv 实现图像人脸检测及视频中的人脸检测
人脸检测的常见步骤如下,如果想要将人脸准确地检测出来,需要通过建立人脸模型,获取准确区分人脸的分类器,这里我们使用网上公开的扩展包或已经训练好的分类器。
叶庭云
2020/09/17
14.1K0
python+opencv  实现图像人脸检测及视频中的人脸检测
OpenCV:使用dlib进行人脸检测
随着人脸识别,人脸支付,换脸等业务等爆发,多的人都将目光放在人脸方面的研究上。可以说,人脸检测是目前所有目标检测子方向中被研究的最充分的问题之一,它在安防监控,人机交互,金融支付,社交和娱乐等方面有很强的应用价值,也是整个人脸识别算法的第一步。
用户3578099
2023/09/01
8150
OpenCV:使用dlib进行人脸检测
OpenCV:人脸检测。
前段时间断更了好久,一部分原因就是学习OpenCV去了。 OpenCV是一个开源、跨平台的计算机视觉库,可以用于各种图像和视频处理操作。 比如最近写的一篇文章里就发现了计算机视觉的内容。 但基于什么小
小F
2020/10/09
1.9K0
OpenCV:人脸检测。
OpenCV 人脸检测(二)
除非是外星人,眼睛通常不会跑到脸部以外。所以我们只需在人脸矩形框的范围内检测眼睛。
用户6021899
2019/09/25
1.8K0
OpenCV 人脸检测(二)
MTCNN算法与代码理解—人脸检测和人脸对齐联合学习
主页:https://kpzhang93.github.io/MTCNN_face_detection_alignment/index.html 论文:https://arxiv.org/abs/1604.02878 代码:官方matlab版、C++ caffe版 第三方训练代码:tensorflow、mxnet
李拜六不开鑫
2018/12/26
2.3K0
Python使用dlib实现人脸检测
代码部分实现起来非常简单,不过十几行的事,不过需要注意的是,通过cv2.imread读取的图片是BRG通道的,需要转成RGB通道,不然通过pyplot显示图片会变色。
Awesome_Tang
2019/02/25
1.1K0
Python使用dlib实现人脸检测
如何用OpenCV在Python中实现人脸检测
https://github.com/maelfabien/Machine_Learning_Tutorials
机器之心
2019/05/30
1.6K0
Python学习案例之图片人脸检测识别
随着科技的发展,人脸识别技术在许多领域得到的非常广泛的应用,手机支付、银行身份验证、手机人脸解锁等等。
小柒2012
2019/12/05
9100
VC++中使用OpenCV进行人脸检测
对于上面的图像,如何使用OpenCV进行人脸检测呢? 使用OpenCV进行人脸检测十分简单,OpenCV官网给了一个Python人脸检测的示例程序,
ccf19881030
2024/05/24
1820
VC++中使用OpenCV进行人脸检测
精通 Python OpenCV4:第三、四部分
在本书的第三部分中,您将体验一下机器学习和深度学习。 我们将探索和利用 OpenCV 的机器学习模块。 此外,您还将学习如何使用与人脸检测,跟踪和识别相关的最新算法来创建人脸处理项目。 最后,将向您介绍 OpenCV 和一些深度学习 Python 库(TensorFlow 和 Keras)的深度学习领域。
ApacheCN_飞龙
2023/04/27
1.4K0
Python中使用opencv-python进行人脸检测
之前写过一篇VC++中使用OpenCV进行人脸检测的博客。以数字图像处理中经常使用的lena图像为例,如下图所示:
ccf19881030
2024/05/24
2450
Python中使用opencv-python进行人脸检测
python+opencv 实现图像人脸检测及视频中的人脸检测
原文链接:https://yetingyun.blog.csdn.net/article/details/108153075 创作不易,未经作者允许,禁止转载,更勿做其他用途,违者必究。
叶庭云
2022/01/10
1.5K0
python+opencv 实现图像人脸检测及视频中的人脸检测
就是这么霸道,使用OpenCV10行代码实现人脸检测
虽然互联网上有很多关于 OpenCV 的 Haar Cascade 对象检测模块这方面的技术资料,但这篇文章的重点是通俗易懂地解释这些概念,希望这能帮助初学者以简单的方式理解 Python 的 OpenCV 库。
小白学视觉
2022/02/14
1.1K0
就是这么霸道,使用OpenCV10行代码实现人脸检测
相关推荐
Python 调用摄像头进行人脸识别
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验