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