计算机图像处理实验.docx
- 文档编号:2268549
- 上传时间:2022-10-28
- 格式:DOCX
- 页数:21
- 大小:22.42KB
计算机图像处理实验.docx
《计算机图像处理实验.docx》由会员分享,可在线阅读,更多相关《计算机图像处理实验.docx(21页珍藏版)》请在冰豆网上搜索。
计算机图像处理实验
位图文件信息的提取和二值化处理
实验步骤:
1.拷贝MinGW文件夹至C:
(路径为C:
\MinGW)
2.编辑setc.bat文件,然后运行此批处理以设置路径。
3.编辑hdr.h和hdr.c文件
4.编辑bmphdr.c文件,然后在当前文件路径下,使用DOS命令:
gcc-chdr.c//编译,生成hdr.o目标文件
gcc-cbmphdr.c//编译,生成bmphdr.o目标文件
gcc-obmphdr.exehdr.obmphdr.o//链接,生成bmphdr.exe执行文件
使用bmphdr.exe来提取某一个bmp文件的头信息,例如:
bmphdrtest.bmp
5.编辑ez.c文件(用于图像的二值化处理),然后
gcc-cez.c//编译,生成ez.o目标文件
gcc-oez.exehdr.oez.o//链接,生成ez.exe执行文件
使用ez.exe文件来对某一个bmp文件进行二值化处理。
例如:
eztest.bmpresult.bmp108(对test.bmp文件进行二值化处理,阈值为108,处理的结果为result.bmp文件)
hdr.h文件内容:
#ifndef__HDR_H__
#define__HDR_H__
structbmphdr{
charsignature[2];
intsize;
shortreserved[2];
intoffset;
inthdr_size;
intwidth;
intheight;
shortnr_planes;
shortbits_per_pixel;
intcompress_type;
intdata_size;
intresol_hori;
intresol_vert;
intnr_colors;
intimportant_color;
charinfo[1024];
};
structbmphdr*get_header(charfilename[]);
#endif
hdr.c文件内容:
#include
#include
#include"hdr.h"
structbmphdr*get_header(charfilename[])
{
FILE*fp;
structbmphdr*hdr;
fp=fopen(filename,"rb");
if(!
fp){
printf("Fileopenerrororsuchfiledoesnotexist!
\n");
returnNULL;
}
hdr=(structbmphdr*)malloc(sizeof(structbmphdr));
fread(hdr->signature,2,1,fp);
if(hdr->signature[0]!
='B'||hdr->signature[1]!
='M'){
printf("Notabmpfile!
\n");
returnNULL;
}
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);
returnhdr;
}
bmphdr.c文件内容:
#include
structbmphdr{
charsignature[2];
intsize;
shortreserved[2];
intoffset;
inthdr_size;
intwidth;
intheight;
shortnr_planes;
shortbits_per_pixel;
intcompress_type;
intdata_size;
intresol_hori;
intresol_vert;
intnr_colors;
intimportant_color;
}header;
intmain(intargc,char*argv[])
{
FILE*fp;
if(argc!
=2){
printf("Usage:
%s
exit
(1);
}
fp=fopen(argv[1],"r");
if(!
fp){
printf("Fileopenerrororsuchfiledoesnotexist!
\n");
exit
(1);
}
fread(header.signature,2,1,fp);
if(header.signature[0]!
='B'||header.signature[1]!
='M'){
printf("Notabmpfile!
\n");
exit
(1);
}
fread(&header.size,4,1,fp);
fread(header.reserved,4,1,fp);
fread(&header.offset,4,1,fp);
fread(&header.hdr_size,4,1,fp);
fread(&header.width,4,1,fp);
fread(&header.height,4,1,fp);
fread(&header.nr_planes,2,1,fp);
fread(&header.bits_per_pixel,2,1,fp);
fread(&press_type,4,1,fp);
fread(&header.data_size,4,1,fp);
fread(&header.resol_hori,4,1,fp);
fread(&header.resol_vert,4,1,fp);
fread(&header.nr_colors,4,1,fp);
fread(&header.important_color,4,1,fp);
fclose(fp);
printf("signature%c%c\n",header.signature[0],header.signature[1]);
printf("size%d\n",header.size);
printf("offset%d\n",header.offset);
printf("hdr_size%d\n",header.hdr_size);
printf("width%d\n",header.width);
printf("height%d\n",header.height);
printf("nr_planes%d\n",header.nr_planes);
printf("bits_per_pixel%d\n",header.bits_per_pixel);
printf("compress_type%d\n",press_type);
printf("data_size%d\n",header.data_size);
printf("resol_hori%d\n",header.resol_hori);
printf("resol_vert%d\n",header.resol_vert);
printf("nr_colors%d\n",header.nr_colors);
printf("important_color%d\n",header.important_color);
printf("\n");
return0;
}
二值化程序ez.c文件内容:
#include
#include
#include
#include"hdr.h"
structbmphdr*hdr;
unsignedchar*bitmap,*to;
charbuf[2048];
intmain(intargc,char*argv[])
{
inti,j,k,nr_pixels;
FILE*fp,*fpnew;
unsignedg;
if(argc!
=4){
printf("Usage:
%s
exit
(1);
}
hdr=get_header(argv[1]);
if(!
hdr)exit
(1);
fp=fopen(argv[1],"rb");
if(!
fp){
printf("Fileopenerror!
\n");
exit
(1);
}
fseek(fp,hdr->offset,SEEK_SET);
nr_pixels=hdr->width*hdr->height;
bitmap=malloc(nr_pixels);
fread(bitmap,nr_pixels,1,fp);
fclose(fp);
k=atoi(argv[3]);
to=malloc(nr_pixels);
memset(to,0,nr_pixels);
for(i=0;i to[i]=bitmap[i]>(unsignedchar)k? 255: 0; fpnew=fopen(argv[2],"wb+"); if(! fpnew){ printf("Filecreateerror! \n"); exit (1); } fwrite(hdr-
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 图像 处理 实验