OpenCV中Mat基本用法:

  Mat类 (Matrix的缩写) 是OpenCV用于处理图像而引入的一个封装类。从功能上讲,Mat类在IplImage结构的基础上进一步增强,并且,由于引入C++高级编程特性,Mat类的扩展性大大提高。

  Mat image(240, 320, CV8UC3);第一个参数是rows,该矩阵的行数;第二个参数是cols,该矩阵的列数;第三个参数是该矩阵元素的类型。这句话表示创建一个大小为240×320的矩阵,里面的元素为8位unsigned型,通道数(channel)有3个。

  Mat::zeros(3, 3, CV32F) + 5;定义个3×3的32bit浮点数矩阵,元素全为0,再将所有元素加上5.0。

C++中vector的at函数:

  假设v是一个vector对象,通常v.at(n)和v[n]是一样的,前者会检查是否越界(因此花费的时间稍多),而后者不会(后者越界会导致未定义行为)。

C++优化之使用emplace:

  在C++开发过程中,我们经常会用STL的各种容器,比如vector,map,set等,这些容器极大的方便了我们的开发。在使用这些容器的过程中,我们会大量用到的操作就是插入操作,比如vector的push_back,map的insert,set的insert。这些插入操作会涉及到两次构造,首先是对象的初始化构造,接着在插入的时候会复制一次,会触发拷贝构造。但是很多时候我们并不需要两次构造带来效率的浪费,如果可以在插入的时候直接构造,就只需要构造一次就够了。

  C++11标准已经有这样的语法可以直接使用了,那就是emplace。vector有两个函数可以使用:emplace,emplace_back。emplace类似insert,emplace_back类似push_back。

OpenCV的连通域处理函数
  在图像处理过程中,经常会遇到这样一部分图像,图像的整体部分如果人来看的话一眼就能看出,但是它的内部由于有各种小缺口,导致断开了,这样在计算机“眼”里就被认为是断开的,为了使图像达到适应人眼的感觉,需要将这些缺口和断开的口给连接上去,这就需要用到计算机图形学中的连通域处理技术。给出一个简单的连通域处理函数,这个函数是来自OpenCV著名教程Learning OpenCV中。

  这个连通域处理函数的形式:

  void ConnectedComponents(Mat &mask_process,  int poly1_hull0,  float perimScale,  int number = 0,  Rect &bounding_box = Rect(),  Point &contour_centers = Point(-1, -1));

  参数mask表示的是需要进行连通域处理二值图像。

  参数poly1_hull0表示轮廓边缘是否采用多边形拟合,如果该参数为1,则表示采用多边形拟合,否则采用凸包拟合。

  参数perimScale是用来将那些小的轮廓去掉,那些小的轮廓时指它的周长小于(mask长+宽)/perimScale。当然你在其内部代码也可以该为面积来判断。

  参数num表示实际需要处理最多的轮廓的个数(如果输入的mask有多个轮廓的话),这里的处理是指计算出这些轮廓的外接矩形和中心点。默认值为0,表示函数内部不需要处理这些外接矩形和中心点。

  参数bbs表示的是处理完后对应轮廓的外接矩形,默认值为Rect(),表示不需要返回这些外接矩形。

  参数centers表示处理完后对应轮廓的中心点坐标,默认值为Point(-1, -1),表示不需要返回这些中心点。

C++ memset()函数: 

  memset 函数是内存赋值函数,用来给某一块内存空间进行赋值的;

  包含在<string.h>头文件中,可以用它对一片内存空间逐字节进行初始化;

  原型为 :

  void *memset(void *s, int v, size_t n);

  这里s可以是数组名,也可以是指向某一内在空间的指针;

  v为要填充的值;

  n为要填充的字节数;

最新文章

  1. QService 服务容器
  2. Play Framework 完整实现一个APP(十三)
  3. [LeetCode] Longest Consecutive Sequence 求最长连续序列
  4. Dll的生成,转化为OMF格式的DLL
  5. jdk研究——java.lang
  6. mvc 开发razor模式注意事项
  7. python中join和split函数
  8. Sublime Text的使用代码块安装的模块
  9. UIButton的遍历
  10. ubuntu mint 开机启动项管理
  11. DAO设计模式实现数据库的增删改查(进一步封装JDBC工具类)
  12. 谈谈Linux内存释放
  13. 2016沈阳网络赛 QSC and Master
  14. 2.Maven 使用
  15. Python打印:九九乘法表
  16. C# -- 使用FileInfo获取文件信息
  17. Maven Webapp项目web.xml版本记录
  18. python中字符串格式化
  19. virtualenv 模块
  20. 和我一起使用postcss+gulp进行vw单位的移动端的适配

热门文章

  1. HDU4624 Endless Spin 和 HAOI2015 按位或
  2. iOS 应用逆向工程分析流程图
  3. count to any
  4. EFK收集nginx日志
  5. 在阿里云CentOS服务器上安装Python3.7并设置为默认Python
  6. three.js 加载3DS 404 文件找不到
  7. css实现块级元素水平垂直居中的方法?
  8. swoolefy PHP的异步、并行、高性能网络通信引擎内置了Http/WebSocket服务器端/客户端
  9. 20181107 模拟赛T1:快乐传递政治正确版
  10. UE4的多线程