OpenCV中Mat的type类型与int值的对应以及初始化问题

9 篇文章 1 订阅

在OpenCV中,数据类型可以使用int值来代替。

常量类型的命名规则为:CV_(位数)+(数据类型)+(通道数)。其与int值的对应关系为:

 C1C2C3C4
CV_8U08 1624
CV_8S191725
CV_16U2101826
CV_16S3111927
CV_32S4122028
CV_32F5132129
CV_64F6142230

U为无符号整型,S为有符号整型,F为浮点型。


char为1字节(8位)

short为2字节(16位)

long和int为4字节(32位)

float为4字节(32位)

double为8字节(64位)

CV_8UC1对应unsigned char

CV_8SC1对应signed char

CV_16UC1对应unsigned short

CV_16SC1对应signed short

CV_32UC1对应unsigned int或者unsigned long

CV_32SC1对应signed int或者signed long

CV_32FC1对应float

CV_64FC1对应double

在定义的同时进行初始化,需要注意利用数组进行初始化的时候,注意数组元素类型与Mat的数据类型的对应关系。否则会出现赋值异常。

double R_data[]={1.0000,0.0074,-3.9363e-04,-0.0074,0.9998,0.0210,5.4919e-04,-0.0210,0.9998};
cv::Mat R(3,3,CV_64FC1,R_data);//cv::Mat R(3,3,6,R_data);
cout<<"RRRRRRRRRRRRRR:"<<endl<<R<<endl;

这里的Mat  R初始化对应的R_data一定要为double,否则会赋值错误。

若R_data类型为float,则输出如下:

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
OpenCVMat是一个重要的数据类型,它是用来存储图像的。Mat可以看作是一个多维数组,它包含了图像的像素数据以及图像的元数据(如图像的大小,通道数,数据类型等)。 Mat的常用构造函数有以下几种: 1. Mat(): 创建一个空的Mat对象。 2. Mat(int rows, int cols, int type): 创建一个指定大小和类型Mat对象。 3. Mat(Size size, int type): 创建一个指定大小和类型Mat对象。 4. Mat(int rows, int cols, int type, Scalar s): 创建一个指定大小和类型,并用指定颜色初始化Mat对象。 5. Mat(Size size, int type, Scalar s): 创建一个指定大小和类型,并用指定颜色初始化Mat对象。 6. Mat(const Mat& m): 创建一个与给定Mat对象大小和类型相同的Mat对象,并复制给定对象的数据。 Mat的一些常用方法: 1. Mat::at(): 用于访问Mat对象的像素。 2. Mat::clone(): 创建一个与原Mat对象大小和类型相同的新对象,并将原对象数据复制到新对象。 3. Mat::convertTo(): 将Mat对象的像素转换成指定的数据类型。 4. Mat::copyTo(): 复制一个Mat对象到另一个Mat对象。 5. Mat::reshape(): 改变Mat对象的大小和通道数。 6. Mat::rows(): 返回Mat对象的行数。 7. Mat::cols(): 返回Mat对象的列数。 8. Mat::size(): 返回Mat对象的大小。 9. Mat::type(): 返回Mat对象的数据类型。 以下是一个简单的Mat的例子: ``` #include <opencv2/opencv.hpp> using namespace cv; int main() { Mat image = imread("lena.jpg", IMREAD_COLOR); if (image.empty()) { return -1; } Mat gray_image; cvtColor(image, gray_image, COLOR_BGR2GRAY); imshow("原图", image); imshow("灰度图", gray_image); waitKey(); return 0; } ``` 这段代码读取了一张彩色图像,将其转换为灰度图像,并显示在窗口

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值