C++下OpenCV学习笔记----Mat类数据结构

C++下OpenCV学习笔记

----Mat类数据结构

一.简介

Mat不仅是非常有用的图像容器类,也是一个通用的矩阵类。

  1. attention
    (1)不必再手动为Mat类开辟空间
    (2)不必在不需要时立即释放空间
  2. 组成
    (1)矩阵头:包含矩阵尺寸、存储方法、存储地址等信息
    (2)一个指向存储所有像素值的矩阵的指针。其中,根据所选的存储方法的不同,矩阵可以是不同的维数。
  3. 矩阵复制
    (1)浅拷贝:=和()
    引用计数机制,即让每个Mat对象拥有不同的信息头,但共享同一矩阵。通过让矩阵指针指向同一地址实现。使用拷贝构造函数时只复制信息头和矩阵指针,而不复制矩阵。
    1>代码实现
#include<opencv2/opencv.hpp>
using namespace cv;
int main()
{
   
	Mat a, c;   //仅创建信息头
	a = imread("C:\\Users\\441\\Desktop\\ZL\\夏目\\1.jpg");    //为矩阵开辟内存
	Mat b(a);   //使用拷贝构造函数
	c = a;    //使用赋值运算符
	imshow("a", a);
	imshow("b", b);
	imshow("c", c);
	waitKey(0);
	return 0;
}

        2>运行结果

         3>attention
          通过对任何一个对象作出改变也会影响其他对象。
         (2)创建只引用部分数据的信息头(以创建感兴趣区域ROI为例)
         a.使用矩阵界定
         1>代码实现

#include<opencv2/opencv.hpp>
using namespace cv;
int main()
{
   
	Mat a;   
	a = imread("C:\\Users\\441\\Desktop\\ZL\\夏目\\1.jpg");   
	Mat b(a, Rect(250, 125, 250, 150));
	imshow("a", a);
	imshow("b", b);
	waitKey(0);
	return 0;
}

         2>运行结果


         b.用行和列界定
         1>代码实现

#include<opencv2/opencv.hpp>
using namespace cv;
int main()
{
   
	Mat a;   
	a = imread("C:\\Users\\441\\Desktop\\ZL\\夏目\\1.jpg");   
	Mat b = a(Range(125, 275), Range::all());
	imshow("a", a);
	imshow
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

X to Y

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值