热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

C#图像处理的多种方法

C#图像处理的多种方法-本文实例为大家分享了C#图像处理的具体代码,供大家参考,具体内容如下(1)在Form1窗体中的PictureBox1控件中显示通过OpenFileDialo

本文实例为大家分享了C#图像处理的具体代码,供大家参考,具体内容如下

(1)在Form1窗体中的PictureBox1控件中显示通过OpenFileDialog指定的图像文件内容。

将SizeMode设置成StretchImage

private void 打开ToolStripMenuItem_Click(object sender, EventArgs e)
    {
      OpenFileDialog open = new OpenFileDialog();
      open.Filter = "所有文件|*.*";
      if (open.ShowDialog() == DialogResult.OK)
      {
        Bitmap im = new Bitmap(open.FileName);
        pictureBox1.Image = im;
        //pictureBox1.SizeMode = PictureBoxSizeMode.StretchImage;
      }
    }

(2)编制一个图像格式转换的应用程序,实现BMP图像与JPEG图像的格式转换。

private void bMPToolStripMenuItem_Click(object sender, EventArgs e)
    {
      Bitmap box = new Bitmap(pictureBox1.Image);
      SaveFileDialog sv1 = new SaveFileDialog();
      sv1.Filter = "bmp|*.bmp";
      sv1.ShowDialog();
      string str = sv1.FileName;
      box.Save(str, System.Drawing.Imaging.ImageFormat.Bmp);
    }
 
private void jPEGToolStripMenuItem_Click(object sender, EventArgs e)
    {
      Bitmap box = new Bitmap(pictureBox1.Image);
      SaveFileDialog sv1 = new SaveFileDialog();
      sv1.Filter = "jpeg文件|*.jpeg";
      sv1.ShowDialog();
      string str = sv1.FileName;
      box.Save(str, System.Drawing.Imaging.ImageFormat.Jpeg);
    }

(3)在窗体中添加两个PictureBox,然后利用OpenFileDialog控件选择一彩色图像文件并在pictureBox1中加载,然后将这一彩色图像转换为灰度图像,并在pictureBox2中进行显示,将此图像保存为a.bmp。

private void 灰度ToolStripMenuItem_Click(object sender, EventArgs e)
    {
      pictureBox2.SizeMode = PictureBoxSizeMode.StretchImage;
      Color c = new Color();
      Bitmap b1 = new Bitmap(pictureBox1.Image);
      int rr, gg, bb, cc;
      for (int i = 0; i  255) cc = 255;
          Color nc = Color.FromArgb(cc, cc, cc);
          b1.SetPixel(i, j, nc);
        }
      }
      pictureBox2.Refresh();
      pictureBox2.Image = b1;
    }
private void 灰度图像存储ToolStripMenuItem_Click(object sender, EventArgs e)
    {
 
      if (pictureBox2.Image != null)
      {
        Bitmap box = new Bitmap(pictureBox2.Image);
        SaveFileDialog sv1 = new SaveFileDialog();
        sv1.Filter = "bmp文件|*.bmp";
        sv1.ShowDialog();
        string str = sv1.FileName;
        box.Save(str, System.Drawing.Imaging.ImageFormat.Bmp);
        //pictureBox2.SizeMode = PictureBoxSizeMode.StretchImage;
      }
      else MessageBox.Show("没有生成灰度图像");
    }

(4)将(3)中制作的a.bmp图像加载到PictureBox1,把a.bmp转换为二值图像,并在pictureBox2中进行显示。

private void 转化ToolStripMenuItem_Click(object sender, EventArgs e)
    {
      //Bitmap m = new Bitmap(pictureBox1.Width, pictureBox1.Height);
      Bitmap map=new Bitmap(pictureBox1.Image);
      Color c;
      for (int i = 0; i  100) c = Color.FromArgb(255, 255, 255); //红色分量值大于100则设成白色
          else c = Color.Black;
          map.SetPixel(j, i, c);
        }
      }
      pictureBox2.Image = map;
      pictureBox2.SizeMode = PictureBoxSizeMode.StretchImage;
    }

(5)建立对比度增强算法,并对a.bmp图像进行对比度增强,显示在pictureBox2中显示出来,与PictureBox1中的a.bmp图像进行比较。

private void 对比ToolStripMenuItem_Click(object sender, EventArgs e)
    { 
      Color c = new Color();
      Bitmap box1 = new Bitmap(pictureBox1.Image);
      int lev=30, wid=170;
      int[] map = new int[256];
      for(int i=0;i<=lev;i++)
      {
        map[i]=0;
      }
      for (int i=lev;i<=wid;i++) //对比度增强
      {
        map[i] = (int)((i * 1.0 - lev) / wid * 255);
      }
      for (int i = lev + wid; i <256; i++)
      {
        map[i] = 255;
      }
      int gray;
      for (int i = 0; i 

灰度图像:

二值图像:

对比度增强:



推荐阅读
  • 本文将介绍如何编写一些有趣的VBScript脚本,这些脚本可以在朋友之间进行无害的恶作剧。通过简单的代码示例,帮助您了解VBScript的基本语法和功能。 ... [详细]
  • 本文详细介绍了Java中org.eclipse.ui.forms.widgets.ExpandableComposite类的addExpansionListener()方法,并提供了多个实际代码示例,帮助开发者更好地理解和使用该方法。这些示例来源于多个知名开源项目,具有很高的参考价值。 ... [详细]
  • 本文介绍如何使用阿里云的fastjson库解析包含时间戳、IP地址和参数等信息的JSON格式文本,并进行数据处理和保存。 ... [详细]
  • Python处理Word文档的高效技巧
    本文详细介绍了如何使用Python处理Word文档,涵盖从基础操作到高级功能的各种技巧。我们将探讨如何生成文档、定义样式、提取表格数据以及处理超链接和图片等内容。 ... [详细]
  • 在尝试使用C# Windows Forms客户端通过SignalR连接到ASP.NET服务器时,遇到了内部服务器错误(500)。本文将详细探讨问题的原因及解决方案。 ... [详细]
  • 本篇教程将继续深入探讨GDI+绘图技术,解决在使用过程中可能出现的文件覆盖保存问题,并提供详细的代码示例和解决方案。通过本教程,读者将能够更好地理解GDI+绘图机制,避免常见的错误。 ... [详细]
  • 优化ListView性能
    本文深入探讨了如何通过多种技术手段优化ListView的性能,包括视图复用、ViewHolder模式、分批加载数据、图片优化及内存管理等。这些方法能够显著提升应用的响应速度和用户体验。 ... [详细]
  • Explore a common issue encountered when implementing an OAuth 1.0a API, specifically the inability to encode null objects and how to resolve it. ... [详细]
  • 本文基于刘洪波老师的《英文词根词缀精讲》,深入探讨了多个重要词根词缀的起源及其相关词汇,帮助读者更好地理解和记忆英语单词。 ... [详细]
  • 在前两篇文章中,我们探讨了 ControllerDescriptor 和 ActionDescriptor 这两个描述对象,分别对应控制器和操作方法。本文将基于 MVC3 源码进一步分析 ParameterDescriptor,即用于描述 Action 方法参数的对象,并详细介绍其工作原理。 ... [详细]
  • 本文详细介绍了Akka中的BackoffSupervisor机制,探讨其在处理持久化失败和Actor重启时的应用。通过具体示例,展示了如何配置和使用BackoffSupervisor以实现更细粒度的异常处理。 ... [详细]
  • DNN Community 和 Professional 版本的主要差异
    本文详细解析了 DotNetNuke (DNN) 的两种主要版本:Community 和 Professional。通过对比两者的功能和附加组件,帮助用户选择最适合其需求的版本。 ... [详细]
  • 本文介绍了在Windows环境下使用pydoc工具的方法,并详细解释了如何通过命令行和浏览器查看Python内置函数的文档。此外,还提供了关于raw_input和open函数的具体用法和功能说明。 ... [详细]
  • dotnet 通过 Elmish.WPF 使用 F# 编写 WPF 应用
    本文来安利大家一个有趣而且强大的库,通过F#和C#混合编程编写WPF应用,可以在WPF中使用到F#强大的数据处理能力在GitHub上完全开源Elmis ... [详细]
  • 请看|差别_Android 6.0 运行时权限处理解析
    请看|差别_Android 6.0 运行时权限处理解析 ... [详细]
author-avatar
拂袖方言_633
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有