将原始图像转换为BMP彩色图像

时间:2014-06-05 18:50:21

标签: rgb pixel

现在,我已经完成了从CMOS相机读取原始图像并使用双线性插值计算R,G,B红绿蓝。问题是,我刚刚阅读了这个部分的示例代码:

image_t = (unsigned char *)malloc((size_t)width * height * 3);

*(image_t + 3 * (width * y + x) + 2) = R;
*(image_t + 3 * (width * y + x) + 1) = G;
*(image_t + 3 * (width * y + x) + 0) = B;

我认为image_t是像素包含RGB值的存储空间。但是我不清楚为什么我们需要为{添加3 * (width * y + x) + 2的image_t?

据我所知(**width * y + x**)是数组中像素的位置。如何 3 和R,G,B分别增加2,1,0?

1 个答案:

答案 0 :(得分:1)

image_t是指向包含图像数据的内存区域的指针。其长度为width * height * 3:图像的宽度(以像素为单位),乘以图像的高度(以像素为单位),乘以每个像素的字节数。

此图像中的每个像素为3个字节:R,G和B值各一个字节。因此,数组中像素的位置实际上是3 * (width * y + x)。这就是 3 的来源。

2,1和0是像素内R,G和B值的字节偏移量。 R位于像素位置+ 2,G位于像素位置+ 1,B位于像素位置+0。