遇到的问题:

1 持续灰色图像框

waitkey()要在imshow()之前调用。

2 CvRect 和Rect

CvXXX是C语言的接口,cv::XXX是C++语言的接口。两者混在一起容易出错

3 分类器detectMultiScale各个参数的作用

CascadeClassifier::detectMultiScale(const Mat& image, vector<Rect>& objects, double scaleFactor=1.1,int minNeighbors, int flag)

这里先将图像变成灰度图,对它应用直方图均衡化,做一些预处理的工作。接下来检测人脸,调用detectMultiScale函数,该函数在输入图像的不同尺度中检测物体。

1. image为输入的灰度图像

2. objects为得到被检测物体的矩形框向量组

3. scaleFactor为每一个图像尺度中的尺度参数,默认值为1.1

4. minNeighbors参数为每一个级联矩形应该保留的邻近个数(没能理解这个参数,-_-|||),默认为3

5. flags对于新的分类器没有用(但目前的haar分类器都是旧版的,CV_HAAR_DO_CANNY_PRUNING利用Canny边缘检测器来排除一些边缘很少或者很多的图像区域,CV_HAAR_SCALE_IMAGE就是按比例正常检测,CV_HAAR_FIND_BIGGEST_OBJECT只检测最大的物,CV_HAAR_DO_ROUGH_SEARCH只做初略检测。

4 findContours:在二值图中寻找图像轮廓,本函数将改变输入的二值图(即参数image)内容。

参数说明:

image:二值化图

contours:检测出的轮廓,每个轮廓是一组点的向量。(一般有多个轮廓,定义为 vector<vector<Point>> contours)

hierarchy:可选输出。大概表示轮廓的层次结构,比如某个轮廓的双亲孩子嵌套的轮廓。(具体看文档)

mode:

CV_RETR_EXTERNAL:只获取最外层轮廓。hierarchy[i][2]=hierarchy[i][3]=-1(注意:这种情况当图像边缘有闭合框时只能检测到那个最大的闭合框)

CV_RETR_LIST:不建立hierarchy,返回所有轮廓

CV_RETR_CCOMP:建立两层hierarchy,返回所有轮廓

CV_RETR_TREE:建立嵌套轮廓的完整hierarchy,返回所有轮廓

method:

CV_CHAIN_APPROX_NONE:存储所有点

CV_CHAIN_APPROX_SIMPLE:储存压缩后的点,一般是矩形的四个顶点

CV_CHAIN_APPROX_TC89_L1,CV_CHAIN_APPROX_TC89_KCOS:(没用过)

offse:可选偏移。每一个轮廓点的偏移量. 当轮廓是从图像 ROI 中提取出来的时候,使用偏移量有用,因为可以从整个图像上下文来对轮廓做分析.

5 计算结果本应为0,计算机给出类似于-..e-006的结果

因为 PI 是无穷数,计算机精度有限。对于浮点数,一般当其小于某个值的时候可以认为==0

6 warpAffine:对一个图像应用旋转变换

C++:voidwarpAffine(InputArray src, OutputArray dst, InputArray M, Size dsize, int
flags=INTER_LINEAR, intborderMode=BORDER_CONSTANT, const Scalar&
borderValue=Scalar())

src 输入图像 ,可以是1,2,3,4通道

dst 输出图像 ,和src是同样类型和大小

M 2x3的旋转矩阵

dsize 输出图像的大小

flag 插值方法:

INTER_NEAREST:最近邻插值

INTER_LINEAR:线性插值(默认参数)

INTER_AREA:使用象素关系重采样。当图像缩小时候,该方法可以避免波纹出现。当图像放大时,类似于CV_INTER_NN方法

INTER_CUBIC:4x4立方体双插值

INTER_LANCZOS4:lanczos 8领域插值

WARP_INVERSE_MAP 表示M是个逆变换(dst-->src)

borderMode:

“BORDER_TRANSPARENT”:对应于源图像中outliers的目标图像的像素并没有被这个函数改变

“BORDER_CONSTANT”

bordervalue:填充颜色

最新文章

  1. 1Z0-053 争议题目解析703
  2. intelj对我来说比较常用的快捷键
  3. 在阿里云 centos 6.3上面安装php5.2(转)
  4. 【转载】MQTT学习笔记——MQTT协议体验 Mosquitto安装和使用
  5. Ⅴ.spring的点点滴滴--引用其他对象或类型的成员
  6. cf442C Artem and Array
  7. Java SE基础部分——常用类库之NumberFormat(数字格式化)
  8. JavaScript 中的事件类型3(读书笔记思维导图)
  9. Unity3DGUI:人物能量条
  10. mapreduce shuffle 和sort 详解
  11. 实现Kubernetes跨集群服务应用的高可用
  12. centos7 安装 oh my zsh
  13. XiangBai——【CVPR2018】Multi-Oriented Scene Text Detection via Corner Localization and Region Segmentation
  14. Vue2.x源码学习笔记-Vue构造函数
  15. 讲道理,为什么分布式一定要有Redis?
  16. Linux的Namespace与Cgroups介绍
  17. 关于vue-devtools安装
  18. es6Math对象新增的方法
  19. Delphi: TLabel设置EllipsisPosition属性用...显示过长文本时,以Hint显示其全文本
  20. Laravel JsonResponse数组获取

热门文章

  1. golang 切片小记
  2. 并查集(模板&amp;典型例题整理)
  3. 10 Quality Free Flat Icon Sets for Your Designs
  4. 20155226 实验三 敏捷开发与XP实践 实验报告
  5. # 20155337 《Android程序设计》实验四实验报告
  6. day 12 列表字典 补充
  7. spark读取mongodb数据写入hive表中
  8. 一个奇怪的JS函数
  9. jsp 修改页面感受
  10. 排序(C语言实现)