CV_8UC1,CV_8UC2,CV_8UC3等意思

时间:2022-12-15 08:24:10
我也不是很熟,但是Mat存图像也用过,试着说一下我的理解:
一般的图像文件格式使用的是 Unsigned 8bits吧,CvMat矩阵对应的参数类型就是
CV_8UC1,CV_8UC2,CV_8UC3。
(最后的1、2、3表示通道数,譬如RGB3通道就用CV_8UC3)

而float 是32位的,对应CvMat数据结构参数就是:CV_32FC1,CV_32FC2,CV_32FC3...
double是64bits,对应CvMat数据结构参数:CV_64FC1,CV_64FC2,CV_64FC3等。

变换这种矩阵单位类型,Mat里有一个函数convertTo可以办到:
C++:void Mat::convertTo(OutputArray m, int rtype, double alpha=1, double beta=0 )
mask.convertTo(OutputArray m, CV_8UC3, -1.0, 255.0); // inverse the mask matrix  means I_new(x,j) = -1*I(x,j) + 255.
rtype 参数就是上述单位类型。具体可以查相关的文档。