VS2013使用C语言实现数字图像处理基础(1)

本文介绍了在VS2013环境下使用C语言进行数字图像处理的基础知识,重点关注位图格式和.bmp文件结构。通过创建窗口并处理消息,利用LoadBMPFile()函数加载和显示位图。文章详细讲解了位图文件头结构体,以及处理过程中调色板的使用和逻辑映射。
摘要由CSDN通过智能技术生成

一.数字图像处理首先应该了解的是位图和位图的格式.

位图就是采用位映象方法显示和存储的图象.但是其实位图可以简单的认为就是.bmp格式的图片.要注意的是.bMP文件的数据从下到上,从左到右的。

而位图也就是.bmp格式的图片的格式(划重点)如下:

位图文件头BITMAPFIEHEADER
文件信息头BITMAPINFOHEADER
调色板palette
实际的位图数据ImageData

下面分别介绍每个部分的结构体的构成(只需要有一个印象即可)

第一.位图的文件头是如下的一个结构体:

typedef struct tagBITMAPFILEHEADER {
WORD         bfType;(文件类型由于是.bmp格式所以必须是0x424d即字符BM)
DWORD        bfSize;(整个图像大小)
WORD         bfReserved1;(保留字1)
WORD         bfReserved2;(保留字2)
DWORD        bfOffBits;(前三个部分的长度之和)
} BITMAPFILEHEADER;
第二.位图的信息头的结构体如下:

typedef struct tagBITMAPINFOHEADER{
DWORD        biSize;         //信息头的长度
LONG         biWidth;        //图像的宽度,单位是像素(必须是4的倍数)
LONG         biHeight;       //图像的高度,单位是像素
WORD         biPlanes;      
第二章EasyDraw是一个简单的绘图软件,这个实例会综合运用本章所介绍了Visual C++ 2005的基础知识。EasyDraw拥有以下功能:1.直线、矩形、椭圆的绘制。2.可以更改绘制线条的类型、宽度、颜色。第三章ColorPicker是一个基于对话框的应用程序,它具有以下功能:1. 色彩编辑功能用户可以通过可以调整R、G、B的值来编辑颜色,亦可通过调整H、S、V的值来选取颜色。颜色编辑的结果会马上反馈到颜色面板和颜色预览框中。2.RGB颜色空间和HSV颜色空间的转换当改变RGB值,会得到相应的HSV值,并进行显示,反之亦然。3.取色功能取色功能包含“面板取色”和“屏幕取色”。面板取色就是用户可以在颜色面板中单击鼠标左键,选取目标点所表示的某种颜色。屏幕取色则是允许用户获取整个屏幕上的任意一点的颜色值。用户可以将鼠标移动到需要获取颜色的地方,然后按a键或A键即可以获取该点颜色值。第四章JpegDecoder类主要用于Jpeg文件的解码。使用方法十分简单,只需要利用GetJPEGBuffer函数返回解码后的像素数组。在第三篇的实例MagicHouse中就需要使用这个类。第五章 MyDib类主要用于处理设备无关位图DIB。Example目录:第六章该目录包含了本章6.4节和6.5节的全部实例代码。pic.jpg的分辨率为96像素每英寸pic_72.jpg的分辩率为72像素每英寸Color.h,Color.cpp:包含了6.5节处理图像的色彩的全部函数Example_GIF目录:它是本章6.6节播放GIF动画的工程,用于播放GIF动画。注意:gif文件必须和生成的exe文件位于同一目录下,gif文件必须改名为pic.gif。第七章TestOpenCV是一个应用OpenCV提供的函数进行图片显示和保存的应用程序,注意TestOpenCV需要OpenCV提供的库支持,因此请首先到相关网站上下载并安装OpenCV第八章本章实例是一个类似ACDSee的图像浏览工具——GraphShower。GraphShower主要实现如下功能:⑴ 类似ACDSee的图片浏览功能。用户只需要打开一个图片,就能利用菜单栏、工具栏或者快捷键快捷的浏览该图像所在目录的所有图像使用方法与ACDSee类似。⑵ 图像的缩放显示功能。图像可以支持以下四种显示模式:① 原始大小:以原始大小显示图像。如果图像大小比视图小,则显示在正中;如果图像比视图大,则显示部分图像。用户可以利用鼠标拖动图像以显示其它部分。 ② 适合宽度:保持图像长宽比例缩放图像,使图像宽度等于视图宽度。③ 适合高度:保持图像长宽比例缩放图像,使图像高度等于视图高度。④ 适合屏幕:自动判断图像的显示方式,使图像能在当前视图上完整显示。⑶ 特效显示。GraphShower支持以下特效:向下扫描、垂直双重扫描、向右移动、水平双重移动、垂直百叶窗、水平百叶窗、垂直栅条、水平栅条、马赛克和雨滴。⑷ 文件目录窗口。通过目录树可以直接打开图像文件。⑸ 位图浏览窗口。以缩略图的形式显示图像。第九章"MagicHouse框架"目录:含有MagicHouse的原始框架,该框架是在GrahpShower的基础上完成的。"MagicHouse"目录:在MagicHouse原始框架下添加了“点运算”的功能。GrayOperator.h和GrayOperator.cpp包含了第9章点运算的全部函数。第十章MagicHouse目录:在第9章MagicHouse的基础上添加了“几何变换”的功能。其中GeoOperator.h和GeoOperator.cpp包含了第10章几何变换的全部函数。Example目录:包含10.7节全部代码。第十一章在第10章MagicHouse的基础上添加了“图像增强”的功能。其中improve.h和improve.cpp包含了第10章图像增强的所有函数。不少函数可以动态设置参数,从而获得不同的效果。本章实例仅简单调用了图像增强的函数。第12章在第11章MagicHouse的基础上添加了“滤镜”的功能。至此,MagicHouse的全部功能就实现了。其中Filter.h和Filter.cpp包含了第11章滤镜的所有函数。第十五章FaceDetection是一个静态人脸检测程序,注意FaceDetection需要OpenCV提供的库支持,因此请首先到相关网站上下载并安装OpenCV,此外本程序需要导入一个分类器文件haarcascade_frontalface_alt.xml,该文件在OpenCV中提供,请读者将该文件复制到程序同一目录下,程序即可正确运行。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值