一般的图像文件格式使用的是 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.