微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在不使用任何库的情况下使用C ++读取24位BMP文件的数据

如何解决如何在不使用任何库的情况下使用C ++读取24位BMP文件的数据

我正在尝试读取24位BMP文件的数据部分。但是在完成图像处理后的读取之后,我的输出颠倒了。每当我尝试反向发送数据时,都会使图像水平翻转。

这是我用来读取数据的代码

iPacketSize = ((320*240)/128);

fp = fopen(StrFullFilePath,"rb");

unsigned char info[54];

// read the 54-byte header

fread(info,sizeof(unsigned char),54,fp); 

// extract image height and width from header

int width = *(int*)&info[18];

int height = *(int*)&info[22];

// allocate 3 bytes per pixel

int size = (height * ( width * ( 24 / 8 )));

unsigned char* data_pix = new unsigned char[size];

unsigned char* data = new unsigned char[size];

// read the rest of the data at once

fread(data_pix,size,fp); 

fclose(fp);

unsigned char tmp;

//Converting BGR to RGB

for(i = 0; i < size; i += 3)
{
   tmp = data_pix[i];

    data_pix[i] = data_pix[i + 2];

    data_pix[i + 2] = tmp;
} 

//taking avg of RBG val

for(j=0;j<76800;j++)
{
    data[j] = ((data_rev[i] + data_rev[i+1] + data_rev[i+2])/3);

    i=i+3;
}

我想知道我做错了哪个过程;是数据读取还是BGR到RGB转换。 从我所了解的情况来看,我想我将BGR转换为RGB是错误的,并且我认为应该有两个循环来执行相同的操作。 如果有人有示例代码或知道此问题,请帮助我。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。