opencv的Mat类
来源:互联网 发布:淘宝客服欢迎用语 编辑:程序博客网 时间:2024/05/21 15:47
Mat类
Mat是一个类:由2个数据部分组成:
1.矩阵头(包含矩阵尺寸、存储方法、存储地址等信息);
2.一个指向存储所有像素值的矩阵(根据所选的存储方法不同,矩阵可以是不同维数的)指针。
矩阵头的尺寸是常数,但矩阵本身尺寸的会依据图像不同而不同,通常比矩阵头的尺寸大数个数量级。
每个Mat对象有自己的信息头,但共享一个矩阵。这通过让矩阵指针指向同一个地址而实现,而拷贝构造函数只复制信息头和矩阵指针。
Mat A,C; //仅创建信息头部分A=imread("1.jpg",CV_LOAD_IMAGE_COLOR) ; //为矩阵开辟内存 Mat B(A);C=A;//赋值运算符
以上所有Mat对象都指向同一个也是唯一一个数据矩阵。虽然信息头不同,但是通过任何一个对象所作的改变也会影响其他对象。
想要创建一个感兴趣区域(ROI),只需要创建包含信息的信息头。
Mat D(A,Rect(10,10,100,100)); //使用矩形界定;
Mat E=A(Range:all(),Range(1,3)); //使用行和列来界定;
复制矩阵本身:
1.A.clone();
2.A.copyTo(G);
创建Mat对象的七种方法
一:Mat构造方法
Mat M(2,2,CV_8UC3,Scalar(0,0,255)); CV_[位数][带符号与否][类型前缀]C[通道数]而预定义的通道数可以多达4个。Scalar是个short型的向量,能使用指定的定制化值来初始化矩阵,还可以表示颜色。
二:在C\C++中通过构造函数进行初始化
int sz[3]={2,2,2};Mat L(3,sz,CV_8UC,Scalar:all(0));指定维数,然后传递一个指向一个数组的指针,这个数组包含每个维度的尺寸。
三:为已经存在的IpIImage指针创建信息头
//为已存在的IpIImage指针创建信息头IpIImage *img=cvLoadImage("1.jpg",1);Mat mtx(img); //转换IplImage*->Mat指定维数,然后传递一个指向一个数组的指针,这个数组包含每个维度的尺寸。
四:利用Create()函数
//利用Mat类中的Create()成员函数进行Mat类的初始化操作M.create(4,4,CV_8UC(2));
阅读全文
0 0
- OPenCV 的mat类
- opencv的Mat类
- OpenCV中Mat类的学习笔记
- opencv之Mat 类赋值的理解
- Opencv 中 Mat类的基本操作
- opencv C++ Mat类的基本知识(混
- opencv的Mat类基本操作
- Opencv Mat类的取值操作
- OpenCV Mat的实现
- Opencv的Mat型
- opencv的mat操作
- opencv Mat的使用方法
- OpenCV Mat类详解
- opencv Mat类用法
- opencv之Mat类
- OpenCV学习:Mat类
- Opencv Mat类
- openCV Mat类详解
- 快速理解Kafka分布式消息队列框架
- 字符串和数组
- web---APP底部导航
- 基于handsontable的web excel(上)
- 链表
- opencv的Mat类
- HTML中的a标签实现点击下载
- 设计模式---工厂方法模式
- iOS-Failed to set (placeholder) user defined inspected property on (UITextView)
- Linux网络实时流量监测工具iftop的安装使用
- HEVC代码学习26:率失真代价类TComRdCost
- Debug your PHP in Docker with Intellij/PHPStorm and Xdebug
- Mathematica 获取豆瓣图书top250,正则表达式
- LeetCode: twosum