我有一个1280 x 720像素的.bmp文件,我想加载到image2中,声明如下:
uint8_t * imageByte = NULL;
image2是一个名为home1.bmp
的文件我想读取bmp文件并将.bmp图像转换为字节数组imageByte,我将用它来与home.bmp进行比较
我对c编程比较新,所以任何人都可以告诉我应该如何使用它?谢谢! 这是我的bmp图像比较代码的一部分,它将比较image1和image2
# define BYTES_PER_PIXEL 4
# define BITMAP_HEADER 54
int temp_width = 1280;
int temp_height = 720;
int temp_x = 0;
int temp_y = 0;
uint8_t k = 0;
char* image1= "E:\\home.bmp";
fp = fopen(image,"rb");
fseek(fp, 0, SEEK_SET);
fseek(fp, BITMAP_HEADER, SEEK_SET);
for(temp_y=0; temp_y<temp_height; temp_y++)
{
temp_x = 0;
for(temp_x=0; temp_x < (temp_width * BYTES_PER_PIXEL); temp_x++)
{
int read_bytes = fread(&k, 1, 1, fp);
if(read_bytes != 0)
{
if(k != imageByte[temp_x])
{
printf("CompareImage :: failed \n");
fclose(fp);
}
}
else
{
printf("CompareImage :: read failed \n");
}
}
}
printf("CompareImage :: passed \n");
答案 0 :(得分:3)
如上所述,BMP文件以 1]一个文件头,提供有关文件的信息,如size ..etc 2] BMP信息标题,提供有关BMP属性的更多信息 这些结构具有固定的大小
以下链接似乎是您的完美参考 http://paulbourke.net/dataformats/bmp/
你应该能够摆脱逐字节比较,这在大多数情况下都是昂贵的,只需读取从开头和比较结构的两个标题。 仅逐字节比较标头匹配。
希望有所帮助