gpt4 book ai didi

c - 如何将.bmp 图像数据保存到数组中并获取每个像素的RGB 值?

转载 作者:太空宇宙 更新时间:2023-11-04 07:11:58 32 4
gpt4 key购买 nike

我正在创建一个程序,可以读取 bmp 图像并计算图像上红色、蓝色和绿色的百分比。查了很多都没有弄明白图像数据到底从哪个字节开始,如何获取像素的RGB值?

#include<stdio.h>

typedef struct {
unsigned int fileSize;
unsigned int offset;
unsigned int reserved;
char signature[2];
} BmpHeader;

typedef struct {
unsigned short bitDepth;
unsigned int compressedImageSize;
unsigned int compression;
unsigned int headerSize;
unsigned int height;
unsigned int horizontalResolution;
unsigned int importantColors;
unsigned int numColors;
unsigned short planeCount;
unsigned int verticalResolution;
unsigned int width;
} BmpImageInfo;

typedef struct {
unsigned char blue;
unsigned char green;
unsigned char red;
} Rgb;

int main(void) {
BmpHeader header;
BmpImageInfo info;



char filename[40];
printf("Enter file name : ");scanf("%s", filename);
FILE *fp;
fp = fopen(filename, "rb");
fread(&header, 1, sizeof(BmpHeader), fp);
fread(&info, 1, sizeof(BmpImageInfo), fp);

printf("%u", info.height);





getchar();
return 0;

}

为什么我的高度不对???

最佳答案

此链接指向描述 .bmp 图像格式的 wiki 页面。注意事项:

  1. .bmp 图像对所有字段使用小端
  2. 字段之间没有间隙/填充,因此需要视为字符数组和/或使用#pragma pack对于描述图像的结构。更喜欢 char 数组方法。
  3. 有一个字段描述每个像素中的位数。复制数据时您将需要该信息。另请注意,每像素 24 位的图像可以具有第 4 个字段不透明度,因此每个像素实际上是 32 位。

Here is the link .

关于c - 如何将.bmp 图像数据保存到数组中并获取每个像素的RGB 值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27673508/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com