数字图像处理实验一(位图文件信息的提取和二值化处理).doc_第1页
数字图像处理实验一(位图文件信息的提取和二值化处理).doc_第2页
数字图像处理实验一(位图文件信息的提取和二值化处理).doc_第3页
数字图像处理实验一(位图文件信息的提取和二值化处理).doc_第4页
数字图像处理实验一(位图文件信息的提取和二值化处理).doc_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

数字图像处理实验一(位图文件信息的提取和二值化处理) 实验平台:MinGW(Mini Gnu for Windows),里面包含gcc for windows的编译器,将其拷贝值某目录,然后设置环境变量(这里我设为c:MinGW,通过一个批处理命令setc.bat实现)设置完成后,即可通过gcc(g+)命令进行编译。(附:使用VC+ 6.0 也可)相关实验文件下载地址:38 /课件/数字图像处理/实验步骤: 拷贝MinGW文件夹至C: (路径为C:MinGW) 编辑setc.bat文件,然后运行此批处理以设置路径。 编辑hdr.h 和hdr.c文件 编辑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 编辑 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文件)setc.bat内容:echo offset msdir=C:MinGWset PATH=%msdir%bin;%PATH%set INCLUDE=%msdir%Include;%msdir%MFCInclude;%INCLUDE%set LIB=%msdir%Lib;%LIB%补充:如果以上批处理命令无效的话,可以:我的电脑-属性-高级-环境变量 编辑变量path 增加 C: MinGWbin hdr.h文件内容:#ifndef _HDR_H_#define _HDR_H_struct bmphdr char signature2;int size;short reserved2;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 info1024;struct bmphdr *get_header(char filename);#endifhdr.c文件内容:#include #include #include hdr.hstruct 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-signature0 != B | hdr-signature1 != 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;bmphdr.c文件内容:#include struct bmphdr char signature2;int size;short reserved2;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; header;int main(int argc, char *argv)FILE *fp;if (argc != 2) printf(Usage: %s n, argv0);exit(1);fp = fopen(argv1, r);if (!fp) printf(File open error or such file does not exist!n);exit(1);fread(header.signature, 2, 1, fp);if (header.signature0 != B | header.signature1 != M) printf(Not a bmp file!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%cn, header.signature0, header.signature1);printf(size %dn, header.size);printf(offset %dn, header.offset);printf(hdr_size %dn, header.hdr_size);printf(width %dn, header.width);printf(height %dn, header.height);printf(nr_planes %dn, header.nr_planes);printf(bits_per_pixel %dn, header.bits_per_pixel);printf(compress_type %dn, press_type);printf(data_size %dn, header.data_size);printf(resol_hori %dn, header.resol_hori);printf(resol_vert %dn, header.resol_vert);printf(nr_colors %dn, header.nr_colors);printf(important_color %dn, header.important_color);printf(n);return 0;二值化程序 ez.c 文件内容:#include #include #include #include hdr.hstruct bmphdr *hdr;unsigned char *bitmap, *to;char buf2048;int main(int argc, char *argv)int i, j, k, nr_pixels; FILE *fp, *fpnew;unsigned g;if (argc != 4) printf(Usage: %s n, argv0);exit(1);hdr = get_header(argv1);if (!hdr) exit(1);fp = fopen(argv1, rb);if (!fp) printf(File open error!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(argv3);to = malloc(nr_pixels);memset(to, 0, nr_pixels);for (i = 0; i (unsigned char)k ? 255 : 0;fpnew = fopen(argv2, wb+);if (!fpnew) printf(File create error!n);exit(1);fwrite(hdr-signature, 2, 1, fpnew);fwrite(&hdr-size, 4, 1, fpnew);fwrite(hdr-reserved, 4, 1, fpnew);fwrite(&hdr-offset, 4, 1, fpnew);fwrite(&hdr-hdr_size, 4, 1, fpnew);fwrite(&hdr-width, 4, 1, fpnew);fwrite(&hdr-height, 4, 1, fpnew);fwrite(&hdr-nr_planes, 2, 1, fpnew);fwrite(&hdr-bits_per_pixel, 2, 1, fpnew);fwrite(&hdr-compress_type, 4, 1, fpnew);fwrite(&hdr-data_size, 4, 1, fpnew);fwrite(&hdr-resol_hori, 4, 1, fpnew)

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论