CV-openCV学习笔记二

来源:互联网 发布:上海极贝网络面试 编辑:程序博客网 时间:2024/05/16 08:00

Mat - The Basic Image Container

Mat

Mat有两部分,矩阵头和指向矩阵的指针
OpenCV使用引用计数系统。每个Mat有各自的头,却有可能共享同一矩阵。复制操作也只是复制头部。

Mat A, C;                          // 仅创建头部A = imread(argv[1], IMREAD_COLOR); // 分配内存Mat B(A);                                 // 拷贝构造函数C = A;                                    // 赋值操作

所有Mat都指向同一个矩阵,但头部不同。

Mat D (A, Rect(10, 10, 100, 100) ); // 长方形Mat E = A(Range::all(), Range(1,3)); // 行列边界

上述两个Mat也指向同一个矩阵,头部不同。
如果想复制矩阵,使用cv::Mat::clone()cv::Mat::copyTo()

Mat F = A.clone();Mat G;A.copyTo(G);

存储方法

OpenCV使用BGR颜色空间

明确创建一个Mat对象

使用cv::Mat::Mat

Mat M(2,2, CV_8UC3, Scalar(0,0,255));cout << "M = " << endl << " " << M << endl << endl; // 只能用于二维数组

无
CV_[每项的bit数][符号][类型前缀]C[通道数]
cv::Scalar是四元素double向量,相当于初始化。


大于2维的图像:

int sz[3] = {2,2,2};Mat L(3,sz, CV_8UC(1), Scalar::all(0));

cv::Mat::create

M.create(4,4, CV_8UC(2));cout << "M = "<< endl << " "  << M << endl << endl;

这里写图片描述

  • 无法初始化值
  • 只有原来矩阵比参数指定的矩阵小的时候才会重新分配空间

0 0
原创粉丝点击