用C#、Emgu写的一个显示图像、彩色变黑白、二值化的程序。
2011-12-24 15:16
1246 查看
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Emgu.CV;
using Emgu.Util;
using System.Runtime.InteropServices;
using System.Drawing.Imaging;
using Emgu.CV.Structure;
namespace ChuanLinVision
{
public partial class Main : Form
{
public Image<Bgr, byte> src;
public Image<Gray, byte> tempgraysrc;
public int thresholdValue=0;
public Main()
{
InitializeComponent();
}
private void 打开ToolStripMenuItem_Click(object sender, EventArgs e)
{
OpenFileDialog opdlg = new OpenFileDialog();
opdlg.Filter = "BMP文件|*.bmp|Jpg文件|*.jpg|所有文件|*.*";
if (opdlg.ShowDialog()!=DialogResult.OK)
{
return;
}
Image<Bgr, byte> img = new Image<Bgr, byte>(opdlg.FileName);
pictureBox1.Image = img.ToBitmap();
src = img;
}
private void 保存ToolStripMenuItem_Click(object sender, EventArgs e)
{
SaveFileDialog sfdlg = new SaveFileDialog();
sfdlg.Filter = "BMP文件|*.bmp|Jpg文件|*.jpg|所有文件|*.*";
sfdlg.FilterIndex = 2;
sfdlg.RestoreDirectory = true;
if (sfdlg.ShowDialog()!=DialogResult.OK)
{
return;
}
string fname = sfdlg.FileName;
Image img = pictureBox1.Image;
Bitmap bmp = new Bitmap(img);
bmp.Save(fname, System.Drawing.Imaging.ImageFormat.Bmp);
}
private void 退出ToolStripMenuItem_Click(object sender, EventArgs e)
{
this.Close();
}
private void 彩色转灰度ToolStripMenuItem_Click(object sender, EventArgs e)
{
Image<Gray, byte> grayimg = src.Convert<Gray, byte>(); //将源图像转换成灰度图像
pictureBox1.Image = grayimg.ToBitmap(); //显示灰度图像
tempgraysrc = grayimg;
}
private void 灰度二值化ToolStripMenuItem_Click(object sender, EventArgs e)
{
Image<Gray, byte> grayimg = src.Convert<Gray, byte>(); //将源图像转换成灰度图像
tempgraysrc = grayimg;
gray2d frm2d = new gray2d();
frm2d.ShowDialog();
int temp = frm2d.trackBar1.Value;
Image<Gray, Byte> imageThreshold = grayimg.ThresholdBinary(new Gray(temp), new Gray(255)); //对灰度图像二值化
pictureBox1.Image = imageThreshold.ToBitmap();
}
}
}
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Emgu.CV;
using Emgu.Util;
using System.Runtime.InteropServices;
using System.Drawing.Imaging;
using Emgu.CV.Structure;
namespace ChuanLinVision
{
public partial class Main : Form
{
public Image<Bgr, byte> src;
public Image<Gray, byte> tempgraysrc;
public int thresholdValue=0;
public Main()
{
InitializeComponent();
}
private void 打开ToolStripMenuItem_Click(object sender, EventArgs e)
{
OpenFileDialog opdlg = new OpenFileDialog();
opdlg.Filter = "BMP文件|*.bmp|Jpg文件|*.jpg|所有文件|*.*";
if (opdlg.ShowDialog()!=DialogResult.OK)
{
return;
}
Image<Bgr, byte> img = new Image<Bgr, byte>(opdlg.FileName);
pictureBox1.Image = img.ToBitmap();
src = img;
}
private void 保存ToolStripMenuItem_Click(object sender, EventArgs e)
{
SaveFileDialog sfdlg = new SaveFileDialog();
sfdlg.Filter = "BMP文件|*.bmp|Jpg文件|*.jpg|所有文件|*.*";
sfdlg.FilterIndex = 2;
sfdlg.RestoreDirectory = true;
if (sfdlg.ShowDialog()!=DialogResult.OK)
{
return;
}
string fname = sfdlg.FileName;
Image img = pictureBox1.Image;
Bitmap bmp = new Bitmap(img);
bmp.Save(fname, System.Drawing.Imaging.ImageFormat.Bmp);
}
private void 退出ToolStripMenuItem_Click(object sender, EventArgs e)
{
this.Close();
}
private void 彩色转灰度ToolStripMenuItem_Click(object sender, EventArgs e)
{
Image<Gray, byte> grayimg = src.Convert<Gray, byte>(); //将源图像转换成灰度图像
pictureBox1.Image = grayimg.ToBitmap(); //显示灰度图像
tempgraysrc = grayimg;
}
private void 灰度二值化ToolStripMenuItem_Click(object sender, EventArgs e)
{
Image<Gray, byte> grayimg = src.Convert<Gray, byte>(); //将源图像转换成灰度图像
tempgraysrc = grayimg;
gray2d frm2d = new gray2d();
frm2d.ShowDialog();
int temp = frm2d.trackBar1.Value;
Image<Gray, Byte> imageThreshold = grayimg.ThresholdBinary(new Gray(temp), new Gray(255)); //对灰度图像二值化
pictureBox1.Image = imageThreshold.ToBitmap();
}
}
}
相关文章推荐
- 在C#中 从一个picturebox中 按住鼠标左键不放 画一块区域后,另外一个picturebox(在一个winform 窗体上有两个picturebox )上马上把对应的截取图像显示出来
- Emgu入门引导——加载并显示图像(C#风格)
- c# 程序只能运行一次(多次运行只能打开同一个程序) 并激活第一个实例,使其获得焦点,并在最前端显示.
- C#2005 一个简单的查询界面代码:DataGridView使用、图像显示、复合查询样例
- 示例程序014--彩色图像各个通道的直方图显示
- C# 程序只能运行一次(多次运行只能打开同一个程序) 并激活第一个实例,使其获得焦点,并在最前端显示.
- 【opencv学习笔记五】一个简单程序:图像读取与显示
- C# 只开启一个程序,如果第二次打开则自动将第一个程序显示到桌面
- c#Winform程序,让pictureBox显示图像(包含GIF),并且不被占用,能即时删除图片。
- C# 调用 Emgu.CV 显示RTSP流 + 设置程序运行超时时间
- 如何将一个彩色图像转换成黑白图像
- OpenCV 2 学习笔记(3): 一个简单的opencv程序:在Console上显示图像
- 写了一个实用的图像放大缩小程序,但是动画GIF转换后不会显示了,只有第一帧
- c# 程序只能运行一次(多次运行只能打开同一个程序) 并激活第一个实例,使其获得焦点,并在最前端显示.
- C#程序双击运行之后,界面不显示,但是在任务管理器有进程(一个winform找bug之旅)
- [GDI+]如何将一个彩色图像转换成黑白图像
- OpenCV编程案例:实现一个双目摄像头图像显示的程序
- C#用basler相机sdk采集图像并用halcon显示的小程序
- c# 程序只能运行一次(多次运行只能打开同一个程序) 并激活第一个实例,使其获得焦点,并在最前端显示.
- c# 程序只能运行一次(多次运行只能打开同一个程序) 并激活第一个实例,使其获得焦点,并在最前端显示.