J'ai un fichier .bmp de 1280 x 720 pixels que je veux charger dans image2 qui est déclaré comme ce qui suit:Comment convertir une image .bmp en tableau d'octets en utilisant C Programme
uint8_t * imageByte = NUL;
image2 est un fichier nommé home1.bmp
je veux lire le fichier bmp et convertir bmp image tableau d'octets imageByte que je vais utiliser pour comparer avec home.bmp
I relativement nouveau à la programmation c, donc quelqu'un peut me dire comment dois-je utiliser pour le faire? Merci! Cette partie de mon bmp code de comparaison d'image qui comparera image1 avec 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");
Un fichier bitmap .BMP contient un en-tête. Cet en-tête contient des informations telles que les dimensions, la profondeur et le type de compression. Votre code ne prend pas en compte cet en-tête. Vous devrez le faire avant de continuer. Sachez également que chaque ligne doit être complétée avec un multiple de 4 octets. Dans une image 32 bits, vous n'avez pas besoin de vous en préoccuper - dans tout autre type, vous devez le faire. MSDN contient des informations sur BITMAPFILEHEADER. Voici un bon point de départ: https://msdn.microsoft.com/en-us/library/windows/desktop/dd183374%28v=vs.85%29.aspx – enhzflep
Qu'en est-il de faire cela: https: // www. google.com/search?q=read+bmp+C+site:stackoverflow.com – alk
Comment "comparer 2 images BMP" est-il différent du "comparer 2 fichiers" régulier? Si vous voulez les comparer pour vérifier si vous avez un fichier en double, il n'est pas nécessaire de les traiter comme des BMP. D'autre part, si vous voulez comparer * data *, devez-vous, par exemple, savoir si un fichier indexé en couleur est identique à un fichier en couleurs vraies? – usr2564301