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<int> vec0(10,2); //10个2
cv::Mat mat0;
mat0 = cv::Mat(vec0, true);
2)Mat转为vector:
std::vector<int> vec1;
vec1 = mat0.reshape(1, 1);
说明:vec0与vec1完全一样。