计算机图像处理实验步骤,计算机图像处理实验..doc

PAGE 1

位图文件信息的提取和二值化处理

实验步骤:

1.拷贝MinGW文件夹至C:(路径为C:\MinGW)

2.编辑setc.bat文件,然后运行此批处理以设置路径。

3.编辑hdr.h 和hdr.c文件

4.编辑bmphdr.c文件,然后在当前文件路径下,使用DOS命令:

gcc -c hdr.c //编译,生成hdr.o目标文件

gcc -c bmphdr.c //编译,生成bmphdr.o目标文件

gcc -o bmphdr.exe hdr.o bmphdr.o//链接,生成bmphdr.exe执行文件

使用bmphdr.exe来提取某一个bmp文件的头信息,例如:

bmphdr test.bmp

5.编辑 ez.c文件(用于图像的二值化处理),然后

gcc -c ez.c //编译,生成ez.o目标文件

gcc -o ez.exe hdr.o ez.o //链接,生成ez.exe执行文件

使用 ez.exe文件来对某一个bmp文件进行二值化处理。

例如:ez test.bmp result.bmp 108 (对test.bmp文件 进行二值化处理,阈值为108,处理的结果为result.bmp文件)

hdr.h文件内容:

#ifndef __HDR_H__

#define __HDR_H__

struct bmphdr {

char signature[2];

int size;

short reserved[2];

int offset;

int hdr_size;

int width;

int height;

short nr_planes;

short bits_per_pixel;

int compress_type;

int data_size;

int resol_hori;

int resol_vert;

int nr_colors;

int important_color;

char info[1024];

};

struct bmphdr *get_header(char filename[]);

#endif

hdr.c文件内容:

#include

#include

#include "hdr.h"

struct bmphdr *get_header(char filename[])

{

FILE *fp;

struct bmphdr *hdr;

fp = fopen(filename, "rb");

if (!fp) {

printf("File open error or such file does not exist!\n");

return NULL;

}

hdr = (struct bmphdr *)malloc(sizeof(struct bmphdr));

fread(hdr->signature, 2, 1, fp);

if (hdr->signature[0] != 'B' || hdr->signature[1] != 'M') {

printf("Not a bmp file!\n");

return NULL;

}

fread(&hdr->size, 4, 1, fp);

fread(hdr->reserved, 4, 1, fp);

fread(&hdr->offset, 4, 1, fp);

fread(&hdr->hdr_size, 4, 1, fp);

fread(&hdr->width, 4, 1, fp);

fread(&hdr->height, 4, 1, fp);

fread(&hdr->nr_planes, 2, 1, fp);

fread(&hdr->bits_per_pixel, 2, 1, fp);

fread(&hdr->compress_type, 4, 1, fp);

fread(&hdr->data_size, 4, 1, fp);

fread(&hdr->resol_hori, 4, 1, fp);

fread(&hdr->resol_vert, 4, 1, fp);

fread(&hdr->nr_colors, 4, 1, fp);

fread(&hdr->important_color, 4, 1, fp);

if (hdr->offset > 54)

fread(&hdr->info, 1024, 1, fp);

fclose(fp);

return hdr;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值