搜档网
当前位置:搜档网 › VC图像处理系列之二图像显示篇

VC图像处理系列之二图像显示篇

 万方数据

 万方数据

retUrn:

//如果使用调色板,则将调色板选入设备土下文

.f(m』PaJette!=NULL)

::SeIectPalette(pDC一>GetSafeHdc(),m-hPalene,TRUE):

//设置显示模式

DDC一>SetStretchB}tModefCOLORONCOLOR}:

//在设备的ptOrigin位置上画出大小为szImage的图像

::StretchDl8its{DDC一>GetSafeHdc(),

pt0r|gln.x,ptOrigIn.y,//起女蛊点

szImage。cX。szlmage.cy。//长和宽

O,O,

m_p8M}H一>blWlclth.m_pBMlH一)biHeig帆

mJ8its,lLPBr『MAPINFO)m_pBM|H,

DIB_RGBJ:OLORS,SRCCOPY):

在这里要说明的是,win32sDK中有大量的句柄,例如:HPALElTE,HPEN等。而MFC中与之对应的是封装后的类cPalette,cPen。二者之问是可以相互转换的。例如:cPalette::FmmHandle可以把一个句柄形式的调色板转换为MFc类的形式;而cPalette::GetsafeHandle则是把类CPalette转换成sDK中的句柄形式。Draw函数中用到的SelectPalette函数的定义是:selectPalette(HDc,HPALElTllE,B00L)。因此,第一个参数应该是HDC类型的。而Draw函数传人的参数是cDc类型的,因此可以使用pDC一>Gets出Hdc()把它转换成HDc类型。

3.视图类的OnDraw函数

0nDmw函数是负责显示的,一般的绘图过程都放在0n—Draw函数中,工程创建时会自动生成该函数。要修改cIm—ageTe8tView类的0nDraw函数来显示图像,修改后的代码如下所示:

vo.dClmageTestView::OnDraw(CDC8pDC)

elmageTestDoc8pDoc=GetOocument《):

ASS£R1.-yALIDlpDoc》:.一‘4。

//获得BMP指针

CBmp+p8mp=pDoc一>Getfmage(I;

.f{p8mp一>GetBMIH{)j=NULL}

CSizeszDlsplay:'。.

szD{8p}ay.c×=pBmp一>GetWidth1):

szDisplay.cy=pBmp一>GetHeight():、。j

pBmp一>Oraw《pDC,CPoInt《Q。0》,szDisplay}:}

:辫勰与▲搀晒

此时,保存工程,编译并运行程序ImageTest。然后,打开标准Lena图像。这时,会看到IJena图像显示在屏幕上,激活ing,终于可以“看”到成果了。Lena图像显示效果如图2所示。

图2Lena图像显示效果

四、类CBmp的设计

通过上面添加的函数可以实现BMP图像的显示功能。此时,类CBmp已经包含了很多信息,如何设计好类cBmp是很值得研究的。在此讨论一下类cBmp的设计思路。

面向对象(Objec卜0riented——00)编程的一个特点就是封装性,即其它类不能任意修改某一类中的变量。设计类时,成员变量通常设置成私有。而为了向外界提供访问类中信息的方法,在类中编写相应的函数,并将这些函数设置成公有。不需要外界访问的函数则设置为私有,如M8kePalette只在类CBmp中调用,即设置为私有函数。类CBmp要完成BMP图像文件的读写和显示等功能,外界可能要调用这些函数,因此设置为公有。除此之外,在图像处理时,经常需要获得图像的宽和高,以及颜色表大小等图像信息,这些变量也应该设置成公有。

按照图像读写和显示的需要,定义了变量ⅡLpBMIH来表示图像信息头;定义m_hPalette来表示图像的调色板;定义ztLpBits来表示图像数据,这些变量都是私有的。同时,为了向外界提供访问图像信息的接口,编写了GetHeight,Getwidth等函数,他们是公有的。对于GetHeigllt等函数,因为他们不修改类的状态,只是返回一些信息,因此可以用const来限制。可能很多人不经常使用“const”,这里有一条运用const的规则——“Useconstwheneveryouneed!”,也就是说,要尽量使用“const”,它可以提高程序的质量。按照上述思路,类cBmp的头文件如下所示:

cla¥¥eBmp:pu翻iceOb}e℃t

t1,j.i.

D曲|.e:

 万方数据

 万方数据

 万方数据

VC图像处理系列之二--图像显示篇

作者:耿迅

作者单位:

刊名:

电脑编程技巧与维护

英文刊名:COMPUTER PROGRAMMING SKILLS & MAINTENANCE

年,卷(期):2005,(10)

被引用次数:1次

参考文献(2条)

1.David J Krulinski;潘爱民Visuall C++技术内幕 1999

2.何斌;马天予;王运坚;朱红莲Visual C++数字图像处理 2002

相似文献(10条)

1.期刊论文刘霜.闪明才.孔祥杰.李小亭.李金海.Liu Shuang.Shan Mingcai.Kong Xiangjie.Li Xiaoting.Li Jinhai基于VC++的CMOS摄像接触式干涉仪图像处理研究-计算机应用与软件2010,27(11)

介绍一种基于VC++的CMOS摄像技术的接触式干涉仪的图像处理方法.被测图像由CMOS摄像采集到计算机,再由计算机上VC++编写的图像处理程序进行数据处理,首先进行数据滤波,再进行干涉条纹中心最小二乘法曲线拟合,最后通过定度算法得到被测量块的长度.

2.期刊论文潘华志.王艳.耿则勋.马军.PAN Hua-zhi.WANG Yan.GENG Ze-xun.MA Jun VC++与Matlab混合编程的图像处理-海洋测绘2006,26(4)

主要讨论了VC++与Matlab混合编程的两种常规方式,给出了利用Matlab数学函数库混合编程的实现方法,指出了常规方式存在不足的同时,提出了另外两种方法,实现了利用Matlab数学函数库和编译器结合VC++混合编程的新方法,充分发挥了VC++有效运算速率与Matlab强大矩阵运算的优点.实验结果说明本文所提方案可行,适用于图像处理.

3.学位论文刘春波流场可视化及DPIV图像处理2004

该文以中文XP为操作平台,以MATLAB为支撑软件,利用Visual C++6.0语言开发了数字粒子图像测速(DPIV)图像处理软件.该软件主要实现的功能包括:(1)用各种形态滤波器对实验中所获得的粒子图像进行去噪的预处理操作;(2)对去噪后的图像采用三种方法进行处理操作,给出所测流场的速度矢量图;(3)进行后处理,包括给出过滤后的速度矢量图、速度剖面图、涡量图和进行数据保存等.设计该软件所涉及到的知识有:软件工程,数字图像处理、面向对象技术、MATLAB编程和VC++6.0程序设计等.作者在阅读大量关于DPIV图像处理软件编程等资料的基础之上,首次选用VC++6.0和MATLAB混合编程技术实现编制过程的想法,并通过大量的编程实践,实现了对该软件的开发.该软件可根据用户的选择打开两幅待处理图像,然后在六种预处理方法中选择任何一种对图像进行预处理,当然也可以复选.直到效果理想后,根据实际需要选择三种处理方法中的一种进行处理.从处理的精度和时间上看,这三种算法各有优缺点.其中有在频域内实现处理,有的在时域内实现的.最后可以对处理后的结果进行后处理.这些功能中,预处理是通过VC++6.0编程实现的,而处理和后处理则是在MATLAB中实现,在VC++6.0中通过MATLAB编译程序调用的.这样的实现思路即可以照顾到单独用MATLAB实现界面不够友好以及计算速度缓慢的缺点又可以克服用VC++6.0编程进行图像处理的复杂性,同时简化了算法更新的步骤.软件采用了完全汉字Windows的界面风格,具有友好的人机交互功能,操作简单,易学易用.

4.学位论文吴晓波基于图像处理方法的柴油机喷油泵喷油量的检测2007

喷油泵是柴油机的一个关键部件。它根据柴油机的转速均匀分配各气缸的进油量,其质量的好坏直接影响到柴油机的整体性能。对喷油泵的校核、调整一般是在喷油泵试验台上进行的。目前国内外喷油泵试验台量油系统普遍采用量筒式计量法,肉眼观察,工作效率低。该方法存在量筒的制造误差、沉积误差、液面读数误差、气泡误差、挥发误差以及测量人员的视觉误差等,使得测量精度较低、耗时长,已不能满足对汽车发动机的环保技术要求和节能要求。

本论文分析了目前喷油泵试验台量油系统存在的问题,并针对所存在的问题,利用图像处理技术研究一种新型的柴油机喷油泵喷油量的检测方法

:通过油雾的数字图像信息直接转换为喷油量的数值。全文主要包括以下几个方面的内容:

首先,根据图像检测原理和现有的喷油泵喷油量检测技术,建立了实验系统的构架,实现了对油雾图像的自动采集和存储。

其次,研究了相关的图像处理算法,并针对油雾图像的特点,确立了实验中油雾图像处理的算法。

然后,应用VC++技术,结合油雾图像处理的相关算法,建立了柴油机喷油泵喷油量检测的图像处理系统。

最后,通过多次试验,建立了油雾图像的相关样本,并利用图像处理系统实现了对油雾图像样本的灰度值的测定。然后通过试验标定了相对应的喷油量,基本建立了喷油量和灰度值之间对应关系。

5.期刊论文郭艳丽.彭建怡.GUO Yan-li.Peng Jian-yi VC++与Matlab混合编程研究及其在图像处理中应用-电脑知识与技术(学术交流)2005(9)

在分析Matlab接口的基础上,提出并讨论了VC++与MATLAB混合编程的方法,并且结合数字图像处理方法给出了混合编程方法在图像处理中的应用.实验表明,将VC与MATLAB结编程合,既有效地利用了MAT-LAB的高效计算功能,又继承了VC的良好程序界面.

6.期刊论文刘丽梅.郑新武.陈永明.王磊基于OpenCV的图像处理程序开发方法的研究-机电技术2010,33(5)

OpenCV是一个开放源代码的机器视觉库,可在应用VC++进行程序开发的过程中,直接调用OpenCV视觉库的特定函数,开发出自己的图像处理程序.文章通过示例程序--"Canny边缘检测",论述了将VC与OpenCV相结合进行图像处理程序开发的具体方法.

7.学位论文杨俊变电站遥视图像的识别研究2004

随着我国电网调度自动化、实用化工作的深入,以及电网调度管理需求的提高,变电站的无人值守运行是电力系统当今的发展趋势.人们已经实现了将变电站的设备运行数据、状态转送到远方的调度中心,同时也能在调度中心对现场设备进行控制及调节.本论文介绍了图像处理和分析的基本概念,研究了对通过视频采集到无人值守变电站的图像进行防火防盗、刀闸开合状态的图像识别,对采集的图像进行了一定的智能性处理,其智能性体现在运用三帧差分图像法对变电站发生的火灾与非法入侵者的检测,运用图像剪切与图像检索对变电站的刀闸的状态进行判断,利用MATLAB与VC++混合编程达到了良好的识别效果,并启动相关报警系统.让计算机自动识别和判断无人值守变电站的故障或隐患,达到了实时监控和故障诊断及预警的目的.最后针对无人值守变电站的图像识别提出了硬件上及软件上进一步的工作.

8.期刊论文孙晔.李光耀.SUN Ye.LI Guang-yao基于COM的VC与MATLAB联合编程在图像处理中的应用-微型电脑应

用2007,23(12)

展示了一种基于组件对象模型(Component Object Module,COM)的VC与MATLAB的联合编程方法.使用MATLAB函数调用图像处理工具箱功能,通过VC调用其导出的COM接口,并对返回结果进行后续处理,在充分利用成熟库加快开发的同时,保证了友好的用户界面和性能.程序打包后可以脱离MATLAB环境运行

.文中介绍了该技术在城市仿真系统开发中的应用.

9.期刊论文赵民.那丽红.闵莉.刘大任.ZHAO Min.NA Lihong.MIN Li.LIU Daren基于图像处理技术的石材大板表

面轮廓提取算法-沈阳建筑大学学报(自然科学版)2010,26(5)

目的 研究石材大板表面轮廓提取算法,实现石材大板的在线测量,解决国内石材企业不能对板材进行在线测量和数控加工问题.方法 采用CCD摄像机、图像采集卡和计算机来实现非接触测量系统的硬件搭建,构成基于CCD技术的石材大板在线测量系统,利用数字图像处理技术进行石材大板表面廓形特征提取.用VC++编程实现图像灰度变换、平滑处理、图像分割和数学形态学处理过程,完成了石材大板表面轮廓提取.结果 通过CCD图像采集系统可以完成石材表面廓形提取,提取的廓形达到了石材设计要求.结论 利用灰度变换、平滑处理、图像分割和数学形态学等图像处理技术完成的石材表面轮廓提取,为进一步高精度尺寸计算提供基础.对利用矿山资源,节能减排具有重要意义.

10.期刊论文王宏超高速激光标刻控制系统研究与实现-应用能源技术2009(11)

介绍了激光标刻的原理,激光标刻技术的发展现状以及激光标刻系统的组成.从整个激光标刻控制系统的软硬件的设计出发,分析了硬件接口电路方案的选择,进行了基于USB接口控制器设计及基于VC+ +6.0的激光标刻控制系统软件部分的设计.

引证文献(1条)

1.闫建平.蔡进功.首祥云.邵在平.李尊芝基于Visual C++的成像测井图像双缓存视图显示[期刊论文]-测井技术2007(6)

本文链接:https://www.sodocs.net/doc/576404308.html,/Periodical_dnbcjqywh200510004.aspx

授权使用:吉林大学(jldx),授权号:9295ff8a-4f9d-492b-b4ad-9ee7016f7c34

下载时间:2011年5月18日

相关主题