opencv获取mat的指针_opencv中Mat类型数据操作与遍历

本文介绍了OpenCV中Mat类用于存储图像数据的特点,包括矩阵头信息和指向像素值的指针。Mat的复制有两种形式,一种是浅拷贝,另一种是深拷贝。通过ptr指针和at函数可以实现对Mat中像素的访问和操作,文中给出了具体的遍历像素的示例代码。
摘要由CSDN通过智能技术生成

Mat作为opencv中一种数据类型常常用来存储图像,相对与以前的IplImgae类型来说,Mat类型省去了人工的对内存的分配与释放,转而自动分配释放。Mat Class主要包括两部个数据部分:一个是matrix header(包括matrix的大小尺寸,储存方法,储存地址等等..),另一个是指向存储像素值的矩阵的指针。

Opencv中对Mat的复制分为两种,

Mat A, C; //creates just the header parts

A = imread(argv[1], CV_LOAD_IMAGE_COLOR); //here we'll know the method used (allocate matrix)

Mat B(A);//Use the copy constructor

C= A; //Assignment operator

Mat D (A, Rect(10, 10, 100, 100) ); // using a rectangle

Mat E = A(Range::all(), Range(1,3)); // using row and column boundaries

上面一类仅仅新建了matrix header,对与像素矩阵A,B,C共有,修改其中一项的像素值,其他的也都会改变,可以理解为他们提供了对相同底层数据的不同读取方法。 这么做的好处是为了减少计算成本。

如果仅仅想操作其中的一部分像素,可以创建一个读取部分的header matrix

当然Opencv也提供深度复制的方法

Mat F =A.clone();

Mat G;

A.copyTo(G);

Mat的创建

cv:

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值