C 如何将.bmp图像数据保存到数组并获取每个像素的RGB值?
我正在创建一个程序,可以读取bmp图像并计算其上红色、蓝色和绿色的百分比。我搜索了很多,但不知道图像数据从哪个字节开始,以及如何获得像素的RGB值C 如何将.bmp图像数据保存到数组并获取每个像素的RGB值?,c,C,我正在创建一个程序,可以读取bmp图像并计算其上红色、蓝色和绿色的百分比。我搜索了很多,但不知道图像数据从哪个字节开始,以及如何获得像素的RGB值 #include<stdio.h> typedef struct { unsigned int fileSize; unsigned int offset; unsigned int reserved; char signature[2]; } BmpHeader; typedef struct { unsigned short bi
#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;
}
#包括
类型定义结构{
无符号整数文件大小;
无符号整数偏移量;
无符号整数保留;
字符签名[2];
}BmpHeader;
类型定义结构{
无符号短位深度;
无符号整数压缩dimagesize;
无符号整数压缩;
无符号整数标题;
无符号整数高度;
无符号整数水平分辨率;
未签名的国际重要颜色;
无符号整数颜色;
无符号短计数;
无符号整数垂直分辨率;
无符号整数宽度;
}BmpImageInfo;
类型定义结构{
无符号字符蓝色;
无符号字符绿色;
无符号字符红色;
}Rgb;
内部主(空){
BMP装载机收割台;
BmpImageInfo;
字符文件名[40];
printf(“输入文件名:”;scanf(“%s”,文件名);
文件*fp;
fp=fopen(文件名,“rb”);
fread(&header,1,sizeof(BmpHeader),fp);
fread(&info,1,sizeof(BmpImageInfo),fp);
printf(“%u”,信息高度);
getchar();
返回0;
}
为什么我得到了错误的高度???此链接指向描述.bmp图像格式的wiki页面。注意事项:
.此链接指向描述.bmp图像格式的wiki页面。注意事项:
.此链接指向描述.bmp图像格式的wiki页面。注意事项:
.此链接指向描述.bmp图像格式的wiki页面。注意事项:
./P>考虑使用OpenCVCAN,提供C接口的链接,C接口被禁止,有利于C++接口。它的C++接口需要对C++的理解最少(我通过OpenCV学习了C++)。基本上,您只需使用
imread
读取图像,从文件创建Mat对象,然后使用at
方法访问rgb值。有很多关于StackOverflow的帖子,有些人会认为这是这样做的一个显著的缺点。说“我可以使它工作,但不理解它是如何工作的……”,并不是一个荣誉勋章。“看,尤其是<代码> RGBQUAD< /C++ > Stutt。考虑使用OpenCVCAN,提供C接口的链接。它的C++接口需要对C++的理解最少(我通过OpenCV学习了C++)。基本上,您只需使用imread
读取图像,从文件创建Mat对象,然后使用at
方法访问rgb值。有很多关于StackOverflow的帖子,有些人会认为这是这样做的一个显著的缺点。说“我可以使它工作,但不理解它是如何工作的……”,并不是一个荣誉勋章。“看,尤其是<代码> RGBQUAD< /C++ > Stutt。考虑使用OpenCVCAN,提供C接口的链接。它的C++接口需要对C++的理解最少(我通过OpenCV学习了C++)。基本上,您只需使用imread
读取图像,从文件创建Mat对象,然后使用at
方法访问rgb值。有很多关于StackOverflow的帖子,有些人会认为这是这样做的一个显著的缺点。说“我可以使它工作,但不理解它是如何工作的……”,并不是一个荣誉勋章。“看,尤其是<代码> RGBQUAD< /C++ > Stutt。考虑使用OpenCVCAN,提供C接口的链接。它的C++接口需要对C++的理解最少(我通过OpenCV学习了C++)。基本上,您只需使用imread
读取图像,从文件创建Mat对象,然后使用at
方法访问rgb值。有亩