OpenCV系列教程(七)人脸检测
一 人脸检测
1.1 equalizeHist()
void cvEqualizeHist( const CvArr* src, CvArr* dst );
功能:直方图均衡化处理
参数:
src:单通道灰度图
dst:得到对比度更强的输出图像
返回值:无
1.2 级联分类器 CascadeClassifier
分类器是判别某个事物是否属于某种分类的器件,其结果要么是,要么不是,级联分类器,可 以理解为将 N 个单类的分类器串联起来,如果一个事物能属于这一系列串联起来的的所有分类器,则最终结果就成立,若有一项不符,则判定为不成立。比如人脸,它有很多属性,我们将每个属性做一成个分类器,如果一个模型符合了我们定义的人脸的所有属性,则我们人为这个模型就是一个人脸,比如人脸需要有两条眉毛,两只眼睛,一个鼻子,一张嘴,一个大概 U 形状的下巴或者是轮廓等等。
常用方法:
一、从文件中加载级联分类器
CV_WRAP bool load( const String& filename );
二、检测级联分类器是否被加载
CV_WRAP bool load( const String& filename );
三、目标检测方法
CV_WRAP void detectMultiScale( InputArray image,
CV_OUT std::vector& objects,
double scaleFactor = 1.1,
int minNeighbors = 3, int flags = 0,
Size minSize = Size(),
Size maxSize = Size() );
功能:检测输入图像中不同大小的对象。检测到的对象以矩形列表的形式保存
参数:
image: 包含检测对象的图像的 CV_8U 类型矩阵
objects: 矩形的向量,其中每个矩形包含被检测的对象,矩形可以部分位于原始图像之外
scaleFactor: 指定在每个图像缩放时的缩放比例
minNeighbors:指定每个候选矩形需要保留多少个相邻矩形
flags:含义与函数 cvHaarDetectObjects 中的旧级联相同,一般是 0,它不用于新的级联
minSize:对象最小大小,小于该值的对象被忽略
maxSize:最大可能的对象大小,大于这个值的对象被忽略
返回值:无
1.3 rectangle()
void rectangle(Mat& img, Point pt1,Point pt2,
const Scalar& color, int thickness=1,
int lineType=8, int shift=0)
功能:绘制简单、指定粗细或者带填充的矩形
参数:
Img:图像来源
pt1:矩形的一个顶点,一般是左上角
pt2:矩形对角线上的另一个顶点,一般是右下角
color:线条颜色 (BGR) 或亮度(灰度图像 )(grayscale image)
Thickness:组成矩形的线条的粗细程度,取负值时(如 CV_FILLED)函数绘制填充了色彩的矩形
line_type:线条的类型
shift:坐标点的小数点位数
返回值:无
1.4 VideoCapture 类
VideoCapture 既支持从视频文件读取,也支持直接从摄像机等监控器中读取,还可以读取 IP 视频流,要想获取视频需要先创建一个 VideoCapture 对象,对象创建以后,OpenCV 将会打开文件并做好读取准备,如果打开成功,我们将可以开始读取视频的帧。
捕获本地视频:
VideoCapture cap(“video.mp4”);
捕获摄像机等监控器:
VideoCapture cap(-1);
捕获 IP 视频流:
VideoCapture cap(“http://youku.elecfans.com/video.flv”);
判断打开是否成功:
if (!cap.isOpened()) {
cout << "打开失败!!" << endl;
return -1;
}
读取一帧图像:
if (!cap.read(img)){
cap.set(CV_CAP_PROP_POS_FRAMES, 0);
continue;
}
猜你喜欢LIKE
相关推荐HOT
更多>>javabean是什么?
在Java中,JavaBean是一种符合特定规范的普通Java类,用于封装数据和提供操作数据的方法。JavaBean是一种重要的设计模式,用于实现面向对象编程...详情>>
2023-06-06 16:27:20java零基础入门到精通怎么学?
Java是一门广泛应用于企业级开发和大型应用程序的编程语言。要从零基础入门到精通Java,需要以下步骤和建议:1.学习基础知识:开始学习Java编程...详情>>
2023-06-05 17:02:00token是什么意思
Token是“令牌”的意思,它通常被用于身份验证和授权。在计算机系统中,当用户通过身份验证后,系统会颁发一个Token给用户,用于标识用户身份和...详情>>
2023-04-20 10:57:41虚函数的作用和实现原理
在父类中声明虚函数:在父类中通过在函数声明前加上 virtual 关键字来声明一个虚函数。需要注意的是,虚函数的使用需要谨慎,因为虚函数的调用...详情>>
2023-04-14 14:20:27