Mat::type函数返回值的意义及数据的转换Mat::convertTo

(1)Mat类型容器的数据类型

调用Mat::type函数可以查看Mat容器对象数据的属性,其返回值对应不同数据类型和通道数,如下表所示。

 

 举例说明:

  1. Mat image(300, 300, CV_8UC1);  
  2. cout << image.type() << endl;  

上面两行函数建立了一个CV_8UC1的Mat类对象image,则调用其type函数得到的返回值为0。

对应上表可以看到:数据格式为CV_8U,单通道(C1 means One Channel)。

同理,假设读入一幅图像,也可以查看他的数据属性,如下例:

  1. Mat image;  
  2. image = imread("1.png");  
  3. cout << image.type() << endl;  

假设返回值为16,通过上表,则可以知道被读入的图像是CV_8UC3的属性。

 

(2)对数据类型的修改

利用Mat::convertTo(OutputArray m, int rtype, double alpha=1, double beta=0)函数实现不同数据类型之间的转换。其中:

m:【输出量】就是盛放转换后数据的容器;

rtype:【输入量】目标数据类型;

alpha:【输入量】放缩尺度;

beta:【输入量】偏置量;

如下代码:

cv::Mat Src(100, 100, CV_8UC1, cv::Scalar(125));
cv::Mat Dst;
double alpha = 0.8, beta = 1.5;
Src.convertTo(Dst, CV_32FC1, alpha, beta);

表示我们新建了一个100*100的单通道矩阵Src,数据类型是uchar,所有位置填充125;

我们将Src转换为数据类型为float的矩阵,同时对矩阵内每一个元素执行如下操作:

Dst(x,y) = \alpha \times Src(x,y) + \beta

最终转换完成后的数据,放在Dst矩阵中。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值