千锋教育-做有情怀、有良心、有品质的职业教育机构

400-811-9990
手机站
千锋教育

千锋学习站 | 随时随地免费学

千锋教育

扫一扫进入千锋手机站

领取全套视频
千锋教育

关注千锋学习站小程序
随时随地免费学习课程

上海
  • 北京
  • 郑州
  • 武汉
  • 成都
  • 西安
  • 沈阳
  • 广州
  • 南京
  • 深圳
  • 大连
  • 青岛
  • 杭州
  • 重庆
当前位置:西安千锋IT培训  >  技术干货  >  OpenCV系列教程(七)人脸检测

OpenCV系列教程(七)人脸检测

来源:千锋教育
发布人:qyf
时间: 2023-01-12 16:40:35

  一 人脸检测

  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

c++获取文件大小

2023-03-14

OpenCV系列教程(四) 计算 N 维数据关系

2023-01-11

OpenCV系列教程(三)Mat 像素统计技术

2023-01-11

最新文章NEW

jquery字符串转数字

2023-04-21

tomcat端口号配置

2023-03-20

搭建hadoop高可用集群

2023-03-16

相关推荐HOT

更多>>

快速通道 更多>>

最新开班信息 更多>>

网友热搜 更多>>