1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > Opencv中Mat的data数据只定义为uchar*类型

Opencv中Mat的data数据只定义为uchar*类型

时间:2020-02-09 07:11:44

相关推荐

Opencv中Mat的data数据只定义为uchar*类型

opencv中Mat的数据定义为指向uchar 的指针,而构造函数又提供了许多其他类型。

其实数据在内存中是一维存储的,而图像基本结构是二维的,3D图像还会是三维的;同时,彩色图像还有多个channel(通道);为了便于编程使用,opencv对一维数据进行矩阵的抽象封装,这个就是Mat类;Mat是一个基础类,封装了构造函数,重载运算符和基础的运算函数(很多类似于matlab的函数);Mat_类就是利用模板类型继承于Mat,所以opencv是有模板类型的,就是Mat_。

不管是什么类型,Mat类中的data成员是一个unsigned char *,指向数据的第一个字节(同时还定义了datastart,dataend等,参看源代码),当你使用高级类型的getMat().data函数获得该对象的数据时,可以通过强制转换访问来获得你的数据类型比如我想看float类型图像的第[3,5]像素点的值,可以:((float)data)[5width+3]来访问,这样的访问比较原始。一般opencv core里面提供的算法是输入是InputArray和OutputArray;这两个和Mat有很大的关系,void * 就是指向Mat对象,同时加入了一些flag来判断Mat的类型比如是不是img等。

转载自:/question/872977803343572692.html

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。