OpenCV作为强大的计算机视觉开源库,很大程度上参考了MatLab的实现细节和风格,比如说,在OpenCV2.x 版本以后,越来越多的函数实现了MatLab具有的功能,甚至干脆连函数名都一模一样(如 imread, imshow,imwriter等)。
Mat类 (Matrix的缩写) 是OpenCV用于处理图像而引入的一个封装类。
Mat一般是二维向量,如果是灰度图,一般存放 <uchar>
类型;如果是RGB彩色图,存放 <Vec3b>
类型(Vec3b是cv::vector<uchar, 3>
的别名);
什么是char类型
顾名思义,char类型是专门存储字符(如字母(对应acsii码表)和数字)
在JAVA中char占2个字节,C语言中占1个字节。
uchar类型:
uchar类型一个字节存储值为[0,255];
Vec3b
Vec3b是cv::vector<uchar, 3>
的别名,表示创建一个3个uchar类型数据的vector向量,其中每个uchar类型分别存一个通道的值(注意命名空间为cv而不是std);
上图可以看出3个通道是共享坐标的,也就意味着3个uchar的值是连续存放的