本文的目标是实现对于摄像头内的人脸进行实时检测。
一、文件准备
首先需要到opencv的github网站上下载opencv/samples/dnn/face_detector/中所有的文件,并覆盖到本地的...\opencv\sources\samples\dnn\face_detector这个目录中。然后用记事本打开weights.meta4文件,下载其中两个url对应的文件。
由于下载过程可能需要科学上网,因此我将所需要的文件打包 face_detector.zip,大家将压缩包解压后将里面所有文件复制到本地目录...\opencv\sources\samples\dnn\face_detector中即可。
二、程序设计
2.1 主要函数
1. blobFromImage()
blobFromImage(InputArray image, //输入神经网络进行处理的图片
double scalefactor=1.0, //对像素值进行一定的尺度缩放
const Size& size = Size(), //神经网络在训练的时候要求输入的图片尺寸
const Scalar& mean = Scalar(), //需要将图片整体减去的平均值
bool swapRB = false, //BGR的顺序是否要交换,如果为true则为RGB
bool crop = false, //是否需要裁剪
int ddepth = CV_32F
)
2. net.forward()
Mat probs = net.forward();
其输出有四个维度
- 第一个维度:所有图像中每个图像的index
- 第二个维度:当前图像是第几个批次batchid,第几张图imageid
- 第三个维度:框的个数;
- 第四个维度:每个框有七个值,前两个是类型和dst,第三个是置信度,最后四个是矩形的左上角和右下角
2.2 示例程序
void

本文介绍了如何使用OpenCV的DNN模块进行实时人脸检测。首先,从opencv的github仓库下载所需文件并配置。然后,通过blobFromImage()函数预处理图像,接着使用net.forward()进行人脸检测。程序会在摄像头捕获的每一帧中检测人脸,当检测到人脸且置信度超过0.6时,将在图像上绘制出检测到的矩形框。整个过程实现了基于Tensorflow模型的实时人脸检测功能。

2017

被折叠的 条评论
为什么被折叠?



