问题:
如果Mat 中想存小数,那么声明是就要用CV_32FC1等浮点数的类型,并且在访问像素的时候,指向每一行(i行)的指针:
不再是: uchar *data=src.ptr<uchar>(i); 了 (uchar 是0~255的无符号整数)
而是用:float *data =src.ptr<float>(i)。(以前不懂也没注意这个,程序一直出错)。
PS:因为再写颜色相关图的程序,需要保存一个掩码mark 矩阵,其中每个元素存一个【0~1】的权重,用以前的遍历图片像素的代码改的,结果总不对,后来才发现是新创建的矩阵的元素用的 uchar ,是无符号整型,不能存小数的,才恍然大悟,也才有了这篇blog,内容比较简单,仅供自己学习,也供有需求的人参考。
以下参考自:http://www.cnblogs.com/wangguchangqing/p/4016179.html
TYPE表示了矩阵中元素的类型以及矩阵的通道个数,它是一系列的预定义的常量,其命名规则为CV_(位数)+(数据类型)+(通道数)。具体的有以下值
CV_8UC1 | CV_8UC2 | CV_8UC3 | CV_8UC4 |
CV_8SC1 | CV_8SC2 | CV_8SC3 | CV_8SC4 |
CV_16UC1 | CV_16UC2 | CV_16UC3 | CV_16UC4 |
CV_16SC1 | CV_16SC2 | CV_16SC3 | CV_16SC4 |
CV_32SC1 | CV_32SC2 | CV_32SC3 | CV_32SC4 |
CV_32FC1 | CV_32FC2 | CV_32FC3 | CV_32FC4 |
CV_64FC1 | CV_64FC2 | CV_64FC3 | CV_64FC4 |
原文地址:http://blog.csdn.net/hyqsong/article/details/46367765