如何解决如何在不使用任何库的情况下使用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 举报,一经查实,本站将立刻删除。