1.opencv中Mat存在各种类型,其中mat有一个type()的函数可以返回该Mat的类型。类型表示了矩阵中元素的类型以及矩阵的通道个数,它是一系列的预定义的常量,其命名规则为CV_(位数)+(数据类型)+(通道数)。具体的有以下值:
2.注意在用at运算符访问Mat时,需特别注意数据类型。
3.很坑的一点,opencv的imread函数即使读入的原图片是灰度图,默认会把Mat变成三通道。
测试代码:
Mat mask = imread("_variantMask.jpg");//_variantMask.jpg是一幅灰度图。
cout <<"类型是" <<mask.type() << " " <<"通道数是"<<mask.channels() << endl;
mask = imread("_variantMask.jpg",0);
cout << "类型是" << mask.type() << " "<<"通道数是"<< mask.channels()<< endl;
输出结果:
4.cout不能直接输出uchar类型。用printf语句即可。