数字图像处理vc编程基础

上传人:第*** 文档编号:61935593 上传时间:2018-12-15 格式:PDF 页数:32 大小:509.76KB
返回 下载 相关 举报
数字图像处理vc编程基础_第1页
第1页 / 共32页
数字图像处理vc编程基础_第2页
第2页 / 共32页
数字图像处理vc编程基础_第3页
第3页 / 共32页
数字图像处理vc编程基础_第4页
第4页 / 共32页
数字图像处理vc编程基础_第5页
第5页 / 共32页
点击查看更多>>
资源描述

《数字图像处理vc编程基础》由会员分享,可在线阅读,更多相关《数字图像处理vc编程基础(32页珍藏版)》请在金锄头文库上搜索。

1、数字图像处理的VC编程基础 一、WINDOWS程序设计基础知识 二、VS2010集成环境介绍 三、Windows 位图操作 四、操作实例 WINDOWS程序设计基础知识 WINDOWS的编程模式 消息驱动、事件触发 抽象的图表设备接口(GDI) 面向对象的资源编辑 动态链接(DLL) 功能强大的API WINDOWS程序的基本框架 程序入口点:WinMain 基于窗口的编程 核心部分:窗口过程 编写WINDOWS程序的方法: 利用Win32 API来编写应用程序 使用MFC来编写应用程序 使用向导生成具体框架,使用MFC来写应用程序 使用向导生成具体框架,使用MFC来写应用程序 1、MFC:M

2、icrosoft 的Windows应用程序接口。封装了大多数的 Win32API函数,并使用和Win32 API相同的名称,使用编程方便。 2、用AppWizard生成程序框架 3、应用程序包含的基本元素: 文档类、视图类、主边框窗口类、子边框窗口类、应用程序类 4、应用程序的控制流程: MFC程序生成了一个应用程序类的全局对象,应用程序类中有两个 虚函数InitApplication和InitInstance负责程序的初始化,即注册窗 口类、生成窗口、运行消息循环等。在InitInstance中构造窗口 (调用Create 函数),显示窗口,然后调用Run 函数启动消息循 环,如果没有消息,

3、就由OnIdle处理一些空闲时的工作。 消息处理机制:利用消息宏把消息和消息处理函数联系起来。分为 标准Windows消息(所有以WM_XXX为标识的消息, WM_COMMAND除外)、控件通知和命令消息 ( WM_COMMAND,可被更多的对象处理。消息映射能继承 应用ClassWizard和WizarBar生成自己的类、添加成员函数、变量等 二、Visual studio 2010集成环境介绍 基本组成:标题栏、菜单栏、各种窗口及状态栏 工具栏:十几种工具,可显示和隐藏,有STANDARD 工具栏、 BUILD 工具栏等 菜单栏:FILE选单(用于对文件进行操作的命令选项) EDIT选单(

4、用于编辑或搜索的命令选项)、VIEW选单 (用于检查源码和调试信息的命令选项)、INSERT (创建新的类、表单或资源,插入已有文件等) PROJECT(用于管理项目和工作区)BUILD(用于编 译、建立和执行应用程序)、TOOLS、WINDOWS 项目工作区:含有工作区的定义和项目中包含文件的所 有信息。 工作区窗口:ClassView FileView ResourceView 资源管理:位图、光标、选单、工具栏、对话框、串表 1、利用资源管理器创建新资源、导入位图和光标及图标等到资源 文件中,还可创建资源模板。 2、利用资源浏览器查看和编辑资源符号。 3、对话框编辑器:用于创建或编辑对话

5、框资源或对话框模板 添加并编辑控件;更改控件属性;格式化对话框;改变制表顺序 和助记键;测试运行对话框。 4、菜单编辑器:用于创建并编辑菜单资源 创建选单资源,用一资源号(ID)标识,定义加速键,在加速键编 辑器中建立相应的加速键表条目,并赋予和选单相同的ID号。定 义状态栏提示。 5、加速键编辑器:添加、删除、更改和浏览项目所用加速键。 6、串表编辑室器 7、版本住处编辑器 8、图形编辑器 9、工具栏 编辑器 三、Windows 位图操作 位图是一二维数组,它与图像中的像素一一对应 设备环境类CDC CDC类封装了绘图所需的成员函数和设备的基本属性,但一般情况 下使用其派生类CClienDC

6、和CWindowDC GDI位图和设备无关的位图 GDI位图也称为设备相关位图(DDB),是一种GDI对象,因此, 首先必须创建它,然后把它选入设备环境中,当使用完后,再删 除。 设备无关位图(DIB)是一种与设备无关的位图,自带颜色信息, 因此有利于在各种设备间传输。 BMP中DIB的结构 1、文件头 BITMAPFILEHEADER typedef struct tagBITMAPFILEHEADER / bmfh WORD bfType ; / signature word “BM“ or 0x4D42 DWORD bfSize ; / entire size of file WORD

7、bfReserved1 ; / must be zero WORD bfReserved2 ; / must be zero DWORD bfOffsetBits ; / offset in file of DIB pixel bits BITMAPFILEHEADER, * PBITMAPFILEHEADER ; 2、位图信息头:BITMAPINFOHEADER typedef struct tagBITMAPINFOHEADER / bmih DWORD biSize ; / size of the structure = 40 LONG biWidth ; / width of the

8、image in pixels LONG biHeight ; / height of the image in pixels WORD biPlanes ; / = 1 WORD biBitCount ; / bits per pixel (1, 4, 8, 16, 24, or 32) DWORD biCompression ; / compression code DWORD biSizeImage ; / number of bytes in image LONG biXPelsPerMeter ; / horizontal resolution LONG biYPelsPerMete

9、r ; / vertical resolution DWORD biClrUsed ; / number of colors used DWORD biClrImportant ; / number of important colors BITMAPINFOHEADER, * PBITMAPINFOHEADER ; 3、调色板(可能没有) typedef struct tagRGBQUAD / rgb BYTE rgbBlue ; / blue level BYTE rgbGreen ; / green level BYTE rgbRed ; / red level BYTE rgbRese

10、rved ; / = 0 RGBQUAD ; 4、实际位图数据 DIB访问函数 typedef struct tagBITMAPINFO / bmi BITMAPINFOHEADER bmiHeader ; / info-header structure RGBQUAD bmiColors1 ; / color table array BITMAPINFO, * PBITMAPINFO ; 1、 SetDIBitsToDevice SetDIBitsToDevice函数显示没有延伸和缩小的DIB。DIB的每个图素对应到输 出设备的一个图素上,而且DIB中的图像一定会被正确显示出来也就是说, 图

11、像的顶列在上方。任何会影响设备内容的座标转换都影响了显示DIB的开始 位置,但不影响显示出来的图片大小和方向。该函数如下: iLines = SetDIBitsToDevice ( hdc, / device context handle xDst, / x destination coordinate yDst, / y destination coordinate cxSrc, / source rectangle width cySrc, / source rectangle height xSrc, / x source coordinate ySrc, / y source coor

12、dinate yScan, / first scan line to draw cyScans, / number of scan lines to draw pBits, / pointer to DIB pixel bits pInfo, / pointer to DIB information fClrUse) ; / color use flag SetDIBitsToDevice函数传回所显示的扫描行的数目。 因此,要调用SetDIBitsToDevice来显示整个DIB图像,您需要下 列信息: hdchdc 目的表面的设备句柄代号 xDstxDst和和yDstyDst 图像左上角的

13、目的坐标 cxDibcxDib和和cyDibcyDib DIB的图素宽度和高度,在这里,cyDib是 BITMAPINFOHEADER结构内biHeight栏位的绝对值。 pInfopInfo和和pBitspBits 指向点阵图信息部分和图素位元的指标 2、StretchDIBits int StrechDIBits(HDC hdc,int Xdest,int Ydest,int DEstWidth,int nDestHeight,int XSrc, int Ysrc,int nSrcWidth,int SrcHeight,CONST VOID *lpBits,CONST BITMAPINFO

14、 *lpBitsInfo,UINT iUsage,DORD dwRo); 要通过缩小或放大DIB,在输出设备上以特定的大小显示它,可 以使用StretchDIBits: iLines = StretchDIBits ( hdc, / device context handle xDst, / x destination coordinate yDst, / y destination coordinate cxDst, / destination rectangle width cyDst, / destination rectangle height xSrc, / x source coo

15、rdinate ySrc, / y source coordinate cxSrc, / source rectangle width cySrc, / source rectangle height pBits, / pointer to DIB pixel bits pInfo, / pointer to DIB information fClrUse, / color use flag dwRop) ; / raster operation 函数参数除了下列三个方面,均与SetDIBitsToDevice相同。 目的座标包括逻辑宽度(cxDst)和高度(cyDst),以及开 始点。 不能通过持续显示DIB来减少记忆体需求。 最後一个参数是位元映射操作方式,它指出了DIB图素 与输出设备图素结合的方式,为此参数设定为SRCCOPY。 调色板管理:颜色查找表 调用CreatePalette创建逻辑调色板,然后用SelectPalette将其选 入设备描述表,再调用RealizePalette使indows在设备描述表 中“实现”逻辑调色板。 四、操作实例 处理位图的三种方法 、利用对象显示位图 、在位图中创建位图 、利用etDIBitsToDev

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 解决方案

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号