【学习OpenCV4】人脸检测的实现方法

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

  本文的目标是实现对于摄像头内的人脸进行实时检测。

一、文件准备

  首先需要到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 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Huffiee

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值