1.MAT类:

OpenCV从2001年开始发展,在最初使用的是c语言,使用的是IplImage数据结构来存储图像,但是最大的问题需要手动申请释放内从( manual memory management),从OpenCV2.0开始,开始使用C++接口的Mat,这是自动分配和释放内存的(automatic memory management)。

Mat有两部分组成

  • 头部:存储方式、图像大小等信息,头部的大小是一个常量(constant)
  • 数据块:图像像素的值(按行顺序存储)
  • NOTE1:大部分拷贝Mat,如拷贝构造、赋值操作,只是拷贝头部信息,他们指向同一个数据块,不同对象对其做操作,会影响到其他对象。如果想进行深拷贝用

    cv::Mat::copyTo 和cv::Mat::clone 方法
  • NOTE2:多个头部指向同一个Matrix,那么谁来对其进行销毁:最后一个使用的对象,OpenCV内部有引用的计数机制 (reference counting mechanism),当增加一个对象(只复制一个头部指向Matrix)counter+1;如果一个对象销毁,counter-1。最后一个对象对Matrix进行回收。
Mat F = A.clone();
Mat G;
A.copyTo(G);

2.储存方式:

  • 彩色RGB,注意OpenCV存储顺序是BGR
  • HSV(色调、饱和度和值) and HLS(色调、亮度和饱和度):(hue, saturation and value/luminance)
  • YCrCb:JPEG格式使用
  • CIELab:测量颜色和颜色之间的距离时使用方便

3.结构类型:

[官方Mat类]:https://docs.opencv.org/4.0.0/d3/d63/classcv_1_1Mat.html#afbf34be80b7443123b2a032a67c3c4e3)

  • 点:

  • 向量:

  • Mat图像通道:

最新文章

  1. Android快乐贪吃蛇游戏实战项目开发教程-03虚拟方向键(二)绘制一个三角形
  2. [LeetCode] Reverse Nodes in k-Group 每k个一组翻转链表
  3. Java 之 集合框架(JCF)
  4. 什么是JAVAbean
  5. 【Codeforces 722C】Destroying Array (数据结构、set)
  6. matlab批量合并txt文件
  7. Java 存储过程调用
  8. WP8_ListBox的用法
  9. YZOI Easy Round 2_回文串 string
  10. poj 3671 Dining Cows (Dp)
  11. IEnumerable和IEnumerator 详解 【转】
  12. VI01增强问题
  13. 数据库设计很棒的参考CDM-PDM-LDM-PowerDesigner
  14. C#设计模式之十一享元模式(Flyweight Pattern)【结构型】
  15. Centos 7.3下 Linux For SQL Server安装及配置介绍
  16. ubuntu14.04 安装 openssh-server
  17. c#中ref和out使用及区别
  18. iOS- 如何将应用集成发短信、发邮件、打电话
  19. [leetcode] 4. Path Sum
  20. PHP扩展--Oracle客户端(oci8)安装

热门文章

  1. Go语言核心36讲51
  2. EluxJS-让你像切蛋糕一样拆解前端巨石应用
  3. i春秋SQLi
  4. Thrift RPC添加access log
  5. 大数据-业务数据采集-FlinkCDC
  6. 深入解读MySQL InnoDB存储引擎Update语句执行过程
  7. Java7提供的Fork/Join框架实现高并发程序,你会使用吗?
  8. md5-有道翻译
  9. 2022CSP-J线上游记
  10. Java基础篇——常用类