csharp数字图像处理源程序(编辑修改稿)内容摘要:

, e) { if((m_Bitmap)) ()。 } private void menuItemBright_Click(object sender, e) { Parameter dlg = new Parameter()。 = 0。 if ( == ()) { if((m_Bitmap, )) ()。 } } 三个函数中分别调用了相应的图像处理函数 Invert()、 Gray()、 Brightness()等三个函数。 这三个函数 Filters 类中的三个类型为 public 的静态函数(含有 static关键字),它们的返回值类型均是 bool型的,根据返回值我们可以决定是否进行主窗体的重绘工作。 Invert()、 Gray()、 Brightness()等三个函数均包含在 Filters类里面, Invert()函数的算法如下: public static bool Invert(Bitmap b) { BitmapData bmData = (new Rectangle(0, 0, , ), , )。 int stride =。 Scan0 =。 unsafe { byte * p = (byte *)(void *)Scan0。 int nOffset = stride *3。 int nWidth = * 3。 for(int y=0。 y。 ++y) { for(int x=0。 x nWidth。 ++x ) { p[0] = (byte)(255p[0])。 ++p。 } p += nOffset。 } } (bmData)。 return true。 } 该函数以及后面的函数的参数都是 Bitmap 类型的,它们传值的对象就是程序中所打开的图像文件了。 该函数中的 BitmapData类型的 bmData 包含了图像文件的内部信息, bmData的 Stride属性指明了一条线的宽度,而它的 Scan0 属性则是指向图像内部信息的指针。 本函数完成的功能是图像颜色的翻转,实现的方法即用 255减去图像中的每个象素点的值,并将所得值设置为原象素点处的值,对每个象素点进行如此的操作,只到整幅图像都处理完毕。 函数中的 unsafe 代码块是整个函数的主体部分,首先我们取得图像内部数据的指 针,然后设置好偏移量,同时设置 nWidth 为*3,因为每个象素点包含了三种颜色成分,对每个象素点进行处理时便要进行三次处理。 接下来运用两个嵌套的 for循环完成对每个象素点的处理,处理的核心便是一句。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。