运用visualc完成基本数字图像处理

运用visualc完成基本数字图像处理

ID:22868944

大小:223.01 KB

页数:16页

时间:2018-11-01

运用visualc完成基本数字图像处理_第1页
运用visualc完成基本数字图像处理_第2页
运用visualc完成基本数字图像处理_第3页
运用visualc完成基本数字图像处理_第4页
运用visualc完成基本数字图像处理_第5页
资源描述:

《运用visualc完成基本数字图像处理》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、运用VisualC#完成基本数字图像处理  引言:  微软的新的.NET平台为开发者带来了许多新的诸如GDI+、Globalization之类的编程机制,同时还发明了一门全新的类似Java的编程语言-C#。对于这些新知识,我们应尽快了解、掌握并试图运用到实践项目中去,而通过实例学习的方法无疑是一个非常有效的途径。本文就通过一个简单的实例,向大家展示了在VisualC#中如何运用GDI+和Unsafe代码类等技术以实现简单的数字图像处理。  一.概述:  本文的实例是一个数字图像处理的应用程序,它完成的功能包括对图像颜色的翻转、对图像

2、进行灰度处理和对图像进行增亮处理。该程序对图像进行处理部分的代码包含在一个专门的Filters类里面,通过调用该类里的静态成员函数,我们就可以实现相应的图像处理功能了。为实现图像处理,我们要对图像进行逐个象素处理。我们知道图像是由一个个的象素点组成的,对一幅图像的每个象素进行了相应的处理,最后整个图像也就处理好了。在这个过程中,我们只需对每个象素点进行相应的处理,在处理过程中却不需要考虑周围象素点对其的影响,所以相对来说程序的实现就变得简单多了。  由于GDI+中的BitmapData类不提供对图像内部数据的直接访问的方法,我们唯一

3、的办法就是使用指针来获得图像的内部数据,这时我们就得运用unsafe这个关键字来指明函数中访问图像内部数据的代码块了。在程序中,我还运用了打开文件和保存文件等选项,以使我们的辛勤劳动不付之东流。  二.程序的实现:  1.打开VisualStudio.net,新建一个VisualC#的项目,在模板中选择"Windows应用程序"即可,项目名称可自定(这里为ImageProcessor)。  2.为使窗体能显示图像,我们需要重载窗体的OnPaint()事件函数,在该函数中我们将一个图像绘制在程序的主窗体上,为了使窗体能显示不同尺寸大小

4、的图像,我们还将窗体的AutoScroll属性设置为true。这样,根据图像的尺寸,窗体两边就会出现相应的滚动条。该函数的实现如下:privatevoidForm1_Paint(objectsender,System.Windows.Forms.PaintEventArgse){Graphicsg=e.Graphics;g.DrawImage(m_Bitmap,newRectangle(this.AutoScrollPosition.X,this.AutoScrollPosition.Y,(int)(m_Bitmap.Width),

5、(int)(m_Bitmap.Height)));}  3.给主窗体添加一个主菜单,该主菜单完成了一些基本的操作,包括"打开文件"、"保存文件"、"退出"、"翻转操作"、"灰度操作"、"增亮操作"等。前面三个操作完成图像文件的打开和保存以及程序的退出功能,相应的事件处理函数如下:privatevoidmenuItemOpen_Click(objectsender,System.EventArgse){OpenFileDialogopenFileDialog=newOpenFileDialog();openFileDialog.Fil

6、ter="Bitmap文件(*.bmp)

7、*.bmp

8、Jpeg文件(*.jpg)

9、*.jpg

10、所有合适文件(*.bmp/*.jpg)

11、*.bmp/*.jpg";openFileDialog.FilterIndex=2;openFileDialog.RestoreDirectory=true;if(DialogResult.OK==openFileDialog.ShowDialog()){m_Bitmap=(Bitmap)Bitmap.FromFile(openFileDialog.FileName,false);this.AutoS

12、croll=true;this.AutoScrollMinSize=newSize((int)(m_Bitmap.Width),(int)m_Bitmap.Height));this.Invalidate();}}  其中,m_Bitmap为主窗体类的一个数据成员,声明为privateSystem.Drawing.Bitmapm_Bitmap;(注:因为程序中用到了相关的类,所以在程序文件的开始处应添加usingSystem.Drawing.Imaging;)同时,在该类的构造函数中,我们必须先给它new一个Bitmap对象:m_B

13、itmap=newBitmap(2,2);上述代码中的this.Invalidate();完成主窗体的重绘工作,它调用了主窗体的OnPaint()函数,结果就将打开的图像文件显示在主窗体上。privatevoidmenuItemSav

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。