我应该读取.bmp文件,然后根据命令行参数进行更改。
示例:
-fromrow x,其中x指定要处理的最底行
-torow x,其中x指定要处理的最上面的行
-fromcol x,其中x指定要处理的最左列
-tocol x,其中x指定要处理的最右列
-op x,其中x是以下之一
- 1 =图像阈值(超过127的指定范围内的任何像素值改变t0 255,像素值127或更小改变为0)
- 2 =负(指定范围内的任何像素值p更改为255-p)
我已经将此代码作为读取.bmp文件的示例:
#include <stdio.h>
#include <stdlib.h>
int main() {
FILE *fp= fopen("sample.bmp", "r+");
if (fp == NULL){
printf("Error");
}
int temp=0;
//Go to Byte 22
fseek(fp,22,SEEK_SET);
//Read byte 22 into an integer variable
fread(&temp, sizeof(int), 1, fp);
printf("Number of Rows: %d\n", temp);
fseek(fp,18,SEEK_SET);
fread(&temp, sizeof(int), 1, fp);
printf("Number of Columns: %d\n", temp);
fseek(fp,10,SEEK_SET);
fread(&temp, sizeof(int), 1, fp);
printf("Start of Pixels: %d\n", temp);
fclose (fp);
}
什么是“像素开始”?我想我以某种方式通过图像的字节并将它们复制到2D数组......但我不知道访问文件字节的suntax?
我甚至不知道在改变图像方面从哪里开始......:/我很茫然。 任何帮助/建议/ linfo /链接将不胜感激。
提前谢谢。
答案 0 :(得分:1)
您需要先阅读BITMAPFILEHEADER
,然后阅读BITMAPINFO
(其中包含BITMAPINFOHEADER
)。这些将为您提供查找和解释像素所需的信息。