C#+EmguCV实现图像灰度化二值化

前面已经学习过EmguCV读取、显示、保存图像,如何使用C#与EmguCV实现图像灰度化二值化呢?灰度图像能让图像处理起来更简单,二值化能剔除很多干扰,下面一起来看看C#+EmguCV实现图像灰度化二值化的代码。也是OpenCV中Threshold函数的使用。

C#+EmguCV实现图像灰度化二值化

C#+EmguCV实现图像灰度化二值化

实现步骤

建立工程

如何使用VS构建EmguCV项目我这里就不讲了,前面两篇文章都有提及,自己去看吧。

UI中使用了button、lable、imageBox、trackBar这四种控件。

C#代码

声明引用

using Emgu.CV;
using Emgu.CV.Structure;
using Emgu.CV.CvEnum;
using Emgu.Util;

声明全局变量

Image<Gray, byte> grayimage;

这个全局变量是后面用来做动态二值化使用的,此变量类型为灰度图像。

选择图像按钮事件代码

 OpenFileDialog ofd = new OpenFileDialog();
if (ofd.ShowDialog() == DialogResult.OK) {
imageBox1.Image =new Image<Bgr, byte>(ofd.FileName);
}

灰度化按钮事件代码

 grayimage = new Image<Gray, byte>(imageBox1.Image.Bitmap);
imageBox1.Image = grayimage;

这里将灰度化的图像赋值给全局变量,后面二值化使用。

trackBar改变事件代码

 private void trackBar1_ValueChanged(object sender, EventArgs e)
{
label1.Text = trackBar1.Value.ToString();
double xjThreshold = trackBar1.Value;
var xjImageBinaryzation = grayimage.CopyBlank();
CvInvoke.Threshold(grayimage, xjImageBinaryzation, xjThreshold, 255, ThresholdType.Binary);
imageBox1.Image = xjImageBinaryzation;
}

总结:EmguCV(OpenCV)的算法速度真的快,拖动滑块居然没感觉到卡顿。

原创文章,作者:奋斗,如若转载,请注明出处:https://blog.ytso.com/tech/iot/241909.html

(0)
上一篇 2022年4月7日 01:53
下一篇 2022年4月7日 01:53

相关推荐

发表回复

登录后才能评论