图像处理基本方法-c语言调用opencv-实现BMP图片中人脸检测功能
使用opencv检测bmp图片中人脸,主要使用cvHaarDetectObjects函数实现。
函数定义
CvSeq* cvHaarDetectObjects( const CvArr* image, CvHaarClassifierCascade* cascade,
CvMemStorage* storage, double scale_factor=1.1,
int min_neighbors=3, int flags=0, CvSize(min_size=cvSize(0,0) ,CvSize max_size=cvSize(0,0));
参数说明
image 被检图像
cascade haar 分类器级联的内部标识形式
storage 用来存储检测到的一序列候选目标矩形框的内存区域。
scale_factor 在前后两次相继的扫描中,搜索窗口的比例系数。例如1.1指将搜索窗口依次扩大10%
min_neighbors 构成检测目标的相邻矩形的最小个数(缺省-1)。如果组成检测目标的小矩形的个数和小于min_neighbors-1 都会被排除。如果min_neighbors 为 0, 则函数不做任何操作就返回所有的被检候选矩形框,这种设定值一般用在用户自定义对检测结果的组合程序上。
flags 操作方式。当前唯一可以定义的操作方式是 CV_HAAR_DO_CANNY_PRUNING。如果被设定,函数利用Canny边缘检测器来排除一些边缘很少或者很多的图像区域,因为这样的区域一般不含被检目标。人脸检测中通过设定阈值使用了这种方法,并因此提高了检测速度。
min_size 检测窗口的最小尺寸。缺省的情况下被设为分类器训练时采用的样本尺寸(人脸检测中缺省大小是~20×20)。
具体函数调用
faces = cvHaarDetectObjects(imgTmp, cascade, storage, 1.5, 4, 0, cvSize(50,50) );
cascade是加载了haarcascade_frontalface_alt2.xml人脸标识的文件。
返回值faces是检测到的人脸信息,包括坐标和宽高信息。
根据faaces中的信息,再利用cvRectangle函数,将人脸的矩形框绘制出来。
代码实现
/*******************************************************
* file:testFace.c
* date:2021-07-17
* version:1.0.0.1
* author:jack8126
* description: bmp file, dectect face
*******************************************************/
#include "cv.h"
#include "highgui.h"
#include "stdio.h"
#

本文介绍了如何使用C语言结合OpenCV库,通过cvHaarDetectObjects函数检测BMP图像中的人脸。代码示例展示了从加载图像、缩放、人脸检测到绘制矩形框的完整流程,还提供了编译和运行程序的方法。


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



