Opencv的Mat型
来源:互联网 发布:阿里云 oss cdn https 编辑:程序博客网 时间:2024/06/06 14:53
Mat由信息头和矩阵内容两部分组成,创建新的Mat分为两种:
1、只创建信息头
Mat A;//只创建了一个信息头
A=imread("a.jpg");// 创建了矩阵内容,开辟了内存
下面两种方式,只复制信息头:
(1).Mat B=A;
(2).Mat B(A);
这里通过任何一个对象改变Mat A也会改变其他对象,也就是他们都指向唯一一个数据矩阵。
当然还有第三种方式,比较特殊,是创建一个感兴趣的区域:
3.Mat C=A(Rect(10,10,100,100));这里(10,10)为起点坐标,(100,100)为宽和高
这里是一一个新的,只引用部分数据的信息头。
2、复制信息头及矩阵内容
(1).Mat D;
D=imread("d.jpg");
Mat E;
D=cotyTo(E);
(2). Mat D;
D=imread("d.jpg");
Mat E;
E=D.clone();
这种情况下改变复制的矩阵,就不会改变原矩阵了。
个人:做这一部分的时候,我用将a矩阵复制信息头给b矩阵,然后用cvtcolor改变a矩阵,看b矩阵是否改变,发现也改变了。所以我发现cvtcolor不适用于验证这个实验。
创建Mat 的常用方法:
(1).Mat a(2,2,CV_8UC3,scalar(0,0,255));
(2).Mat a=Mat::zeros(2,2,CV_8UC3); //这里zeros可以换成ones或者eys,但是千万不能用 a.zeros。
对于CV_8UC3的结构:
(3).创建多维Mat
int main ()
{
int a[2]={2,2};
Mat ab(2,a,CV_8UC1,Scalar::all(0));
//2是维数,数组中(2,2)是每个维数的长度
cout<<ab<<endl;
}
(4)随机填充Mat
Mat ab;
randu(ab,Scalar::all(0),Scalar::all(255));
(5) Point2f a(1,2);
vector<Point2f> b;
cout<<Mat(b);
Mat可以存储vector ,vector可以存储Point
- Opencv的Mat型
- OpenCV Mat的实现
- OPenCV 的mat类
- opencv的mat操作
- opencv Mat的使用方法
- opencv的Mat类
- OpenCV Mat的使用小记
- OpenCV的Mat基本用法
- opencv Mat 的基本操作
- opencv中mat的push_back。
- opencv Mat - 图像的容器
- opencv的Mat中step
- Opencv Mat的数据读取
- OpenCv:Mat矩阵的初始化
- OPENCV里的Mat结构
- OpenCV中mat的type
- OpenCV中Mat的详解
- openCV中的MAT的详解
- [freemarker篇]02.生成HTML的静态页面
- IOCP不可忽视的细节
- 项目管理十大知识领域和五大过程
- android recyclerview 删除和添加 bug
- easy sssp(spfa判断负环)
- Opencv的Mat型
- iOS开发笔记>> 下拉刷新,自定义UIControl
- Asyncsocket 使用总结
- HashCode
- 动感的网页相册
- 精选CSDN的ACM-ICPC五星博客
- 1881: 蛤玮的机房(今天不宜AC)
- Android-BroadcastReceiver使用笔记
- 黑皮书杂谈