Csharp图像处理教案

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

7-1第1章VC#图像处理学习内容与要点:本章介绍VC#图像处理基础、图像文件的打开、保存方法及图像的移动、尺寸变换、分辨率变换等操作的基本知识和处理技巧。主要有:VC#图像处理基础图像文件的打开和保存图像的拷贝和粘贴图像的放大和缩小图像的分辨率变换等。技术要点:Clipboard对象的使用SystemImage方法的使用1.1VC#图像处理基础1.1.1VisualC#图像处理组件使用CDI+可以显示和处理多种格式的图像文件。使用Windows窗体PictureBox控件,可以在设计时将Image属性设置为有效图片,从而在窗体上加载和显示图片。可使用的图像文件类型如表7-1所示。表7-1图像文件类型类型文件扩展名位图.bmpIcon.icoGIF.gif图元文件.wmfJPEG.jpg1.1.2Bitmap对象Bitmap对象是用于处理由像素数据定义的图像的对象。对图像文件进行处理的类主要为Bitmap类和ImageAttributes类,Bitmap类属于System.Drawing命名空间,该命名空间提供了对GDI+基本图形功能的访问。Bitmap类封装GDI+位图,此位图由图形图像及其属性的像素数据组成。Bitmap的常用方法和属性如表7-2所示。表7-2Bitmap的常用方法和属性公共属性属性说明Flags获取此Image对象的属性标记。7-2FrameDimensionsList获取GUID的数组.Height获取此Image对象的高度。HorizontalResolution获取此Image对象的水平分辨率.Palette获取或设置用于此Image对象的调色板。PhysicalDimension获取此Image对象的宽度和高度。PixelFormat获取此Image对象的像素格式。PropertyIdList获取存储在此Image对象中的属性ID的数组。RawFormat获取此Image对象的格式。Size获取此Image对象的宽度和高度。VerticalResolution获取此Image对象的垂直分辨率。Width获取此Image对象的宽度。公共方法方法说明Clone已重载。创建此Bitmap部分的副本。Equals确定两个Object实例是否相等。FromResource从指定的Windows资源创建Bitmap对象。GetEncoderParameterList返回有关指定的图像编码器所支持的参数的信息。GetFrameCount返回指定维度的帧数。GetPixel获取此Bitmap中指定像素的颜色。GetPropertyItem从该Image对象获取指定的属性项。GetThumbnailImage返回此Image对象的缩略图。GetType获取当前实例的Type。LockBits将Bitmap对象锁定到系统内存中。MakeTransparent使默认的透明颜色对此Bitmap透明。RotateFlip旋转、翻转或者同时旋转和翻转Image对象。Save将Image对象以指定的格式保存到指定的Stream对象。SaveAdd将指定的Image对象中的信息添加到此Image对象中。SelectActiveFrame选择由维度和索引指定的帧。SetPixel设置Bitmap对象中指定像素的颜色。SetPropertyItem将指定的属性项设置为指定的值。SetResolution设置此Bitmap的分辨率。ImageAttributes类属于System.Drawing.Imaging命名空间。它有许多可用于在在图像处理过程中修改图像的属性。ImageAttributes的基本方法和属性如表7-3所示。表7-23ImageAttributes的基本方法和属性公共方法方法说明ClearBrushRempTable清除Brush对象颜色重新映射表。ClearColorKey清除ColorAdjustType枚举指定的GDI+对象的颜色7-3键值。ClearColorMatrix颜色调整矩阵清零。ClearGamma清除ColorAdjustType枚举指定的GDI+对象的伽玛值。ClearNoOp清除所有GDI+对象的NoOp设置。ClearOutputChannel清除ColorAdjustType枚举指定的GDI+对象的输出信道选择。ClearOutputChannelColorProfile清除ColorAdjustType枚举指定的GDI+对象的输出信道选择和颜色配置文件。ClearRemapTable清除ColorAdjustType枚举指定的GDI+对象的颜色重新映射表。ClearThreshold清除所有相关的GDI+对象的阈值。Clone创建该ImageAttributes对象的一个精确副本。Dispose释放ImageAttributes对象使用的所有资源。Equals确定两个Object实例是否相等。GetAdjustedPalette获取调整颜色后的调色板。GetHashCode在哈希算法和数据结构(如哈希表)中使用的特定类型的哈希函数。GetType获取当前实例的Type。SetBrushRemapTable设置重新映射表以转换Brush颜色。SetColorKey为ColorAdjustType枚举指定的GDI+对象设置低颜色值和高颜色值。SetColorMatrices为图像颜色设置颜色调整矩阵,并为灰度值设置单独的灰度调整矩阵。提供颜色矩阵标志。SetColorMatrix将5x5颜色调整矩阵设置为具有指定ColorMatrixFlag枚举的指定Matrix对象。SetGamma为所有GDI+对象设置伽玛值。SetNoOp为ColorAdjustType枚举指定的GDI+对象设置NoOp校正值。SetOutputChannel依据ColorChannelFlag枚举的指定,为所有相关的GDI+对象设置输出颜色通道。SetOutputChannelColorProfile使用字符串中指定的颜色配置文件,为所有GDI+对象设置输出颜色通道。SetRemapTable按照ColorMap对象的指定,为ColorAdjustType枚举指定的GDI+对象设置重新映射表。SetThreshold为所有适当的GDI+对象设置双级映射阈值。SetWrapMode只设置环绕模式。ToString返回表示当前Object的String。使用ImageAttributes制作半透明图像的程序例子如下:Graphicsg=this.pictureBox1.CreateGraphics();stringpath=@C:\DocumentsandSettings\Administrator\MyDocuments\MyPictures\7-4样品.jpg;//创建Bitmap对象并使用“样品.jpg”图像加载//初始化颜色矩阵//注意第4行、4列的值为0.8Bitmapbitmap=newBitmap(path);float[][]matrixItems={newfloat[]{1,0,0,0,0},newfloat[]{0,1,0,0,0},newfloat[]{0,0,1,0,0},newfloat[]{0,0,0,0.8f,0},newfloat[]{0,0,0,0,1}};ColorMatrixcolorMatrix=newColorMatrix(matrixItems);//创建ImageAttributes对象并且设置它的颜色矩阵ImageAttributesimageAtt=newImageAttributes();imageAtt.SetColorMatrix(colorMatrix,ColorMatrixFlag.Default,ColorAdjustType.Bitmap);intiWidth=bitmap.Width;intiHeight=bitmap.Height;//首先,绘一较宽的黑线g.DrawLine(newPen(Color.Black,25),newPoint(10,35),newPoint(200,35));//绘半透明的Bitmap图像g.DrawImage(bitmap,newRectangle(30,0,iWidth,iHeight),0,0,iWidth,iHeight,GraphicsUnit.Pixel,imageAtt);在这个程序中,ImageAttributes对象将所有的alpha值设置为其原始值得80%。方法是通过初始化一个颜色矩阵并将矩阵中的alpha缩放值设置为0.8来实现的。颜色矩阵的地址被传递给ImageAttributes对象的SetColorMatrix方法,ImageAttributes对象被传递给Graphics对象的DrawImage方法。程序运行结果如图1-1所示。在显示过程中,位图中的各个alpha值被转换成其原始值的80%,这将出现与背景相混合的图像。从图1-1中看到,位图图像看上去是透明的,透过图像可看到一个纯黑的宽线条。7-5图1-1使用ImageAttributes对象的例子1.1.3图像的颜色(Color)系统对图像进行处理时用GetPixel获取此Bitmap中指定像素的颜色。这些颜色是由(R,G,B)三基色和(A)透明度组成的。获取颜色值的具体方法为:(1)定义BitmapBitmapmyBitmap=newBitmap(C:\MyImages\TestImage.bmp);(2)在程序中输入myBitmap.后系统会自动弹处bitmap的所有属性,在这里我们使用GetPixel属性来获得颜色值,如图1-2所示。图1-2用GetPixel属性来获得颜色值(3)定义一个颜色变量把在指定位置所取得的像素值存入颜色变量中Colorc=newColor();c=mybitmap.GetPixel(10,10);(4)对颜色值进行分解分解出单色分量值,如图1-3所示。7-6图1-3颜色分解颜色的基本属性如表7-4所示。表7-4颜色的基本属性方法说明A获取此Color结构的alpha分量值。取值(0—255)B获取此Color结构的蓝色分量值。取值(0—255)G获取此Color结构的绿色分量值。取值(0—255)R获取此Color结构的红色分量值。取值(0—255)Name获取此Color名称的名称。这将返回用户定义的颜色的名称或已知颜色的名称(如果该颜色是从某个名称创建的)。对于自定义颜色,将返回RGB值。颜色的基本方法如表7-5所示。表7-5颜色的基本方法方法说明Equals测试指定的对象是否为Color结构并等效于此Color结构。FromArgb从四个8位ARGB分量(alpha、红色、绿色和蓝色)值创建Color结构。FromKnownColor从指定的预定义颜色创建一个Color结构。FromName从预定义颜色的指定名称创建一个Color结构。GetBrightness获取此Color结构的“色调-饱和度-亮度”(HSB)的亮度值。GetHashCode返回此Color结构的哈希代码。GetHue获取此Color结构的“色调-饱和度-亮度”(HSB)的色调值,以度为单位。GetSaturation获取此Color结构的“色调-饱和度-亮度”(HSB)的饱和度值。GetType获取当前实例的Type。ToArgb获取此Color结构的32位ARGB值。ToKnownColor获取此Color结构的KnownColor值。3.2图像的输入和保存7-71.2.1图像的输入在窗体或图形框内输入图像有两种方式:一是在窗体设计时使用对象的Image属性输入,二是在程序中使用通用输入对话框输入。1.窗体设计时使用对象的Image属性输入窗体设计时使用对象的Image属性输入图像的操作如下:(1)选择对象属性中的Image属性。例如,在窗体内输入图像时,如图1-4所示。图1-4属性对话框(2)单

1 / 51
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功