opencv中Mat类型转换

1.Mat不同数据类型之间的转换

缩放并转换到另外一种数据类型。如果输入数组与输出数组的类型相同,则函数可以被用于缩放和平移矩阵或图像。

主要函数:convertTo()

函数原型:Mat::convertTo(OutputArray _dst, int _type, double alpha, double beta)

参数解释:
                   _dst:目的矩阵;
                   _type:需要的输出矩阵类型,或者更明确的,是输出矩阵的深度,如果是负值(常用-1)则输出矩阵和输入矩阵类型相同;
                   alpha:尺度变换因子(可选);默认值是1。即把原矩阵中的每一个元素都乘以alpha。
                   beta:将输入数组元素按比例缩放后添加的值(可选);默认值是0。即把原矩阵中的每一个元素都乘以alpha,再加上beta。
                   dst(i)=src(i)alpha+(beta)

如果scale=1,shift=0,则不进行比例缩放。
 

例:cv::Mat src, src_f; 
image.convertTo(src_f, CV_32F, 1, 0);
图像大小没有变化,但是类型变为了FLOAT32位。

2.Mat与其他数据类型之间的转换

1)vector转为Mat:

std::vector vec0(10,2); //10个2
cv::Mat mat0;
mat0 = cv::Mat(vec0, true);

2)Mat转为vector:

std::vector vec1;
vec1 = mat0.reshape(1, 1);

说明:vec0与vec1完全一样。

你可能感兴趣的:(OpenCV)