我想将 8 位输入彩色图像(Inputfile 是 a.bmp 文件)的所有数据放入一个新的 16 位 Mat Array 中。
我这样做是因为我需要总结几个图像补丁,然后为每个像素建立平均值。
Mat img = imread(Inputfile); //there now should be values between 0 and 255
例如,处理蓝色值如下
uchar* ptr = img.data + img.step*row;
cout << ptr[n*col] << endl;
只显示单个字母,没有值。
cout << static_cast<short>(ptr[n*col]) << endl;
类型转换为更短或更大会产生正确的值。但是转换为 unsigned char (我认为这是正确的数据类型)与没有任何类型转换的情况相同。
据我所知,Short 有 2 个字节,但是颜色 .bmp 每个通道应该只有 1 个字节的颜色信息。因为我需要在最坏的情况下总结 81 个(较小的 128=7 位)像素值,所以我认为作为目标值的 short 会很棒。
有关简单访问 8 位值并在 16 位数组中使用它们的正确方法的任何帮助都会很棒。
谢谢你。