问题描述
我正在尝试读取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 (将#修改为@)