形态学处理(Morphological Processing)是图像处理中的一种基本操作,主要用于图像的形状提取、形态特征分析和对象的清晰化。OpenCvSharp 是 OpenCV 的 C# 包装器,能够让开发者使用 .NET 语言进行计算机视觉任务。在本文中,讲解怎样在 C# 的 WinForm 应用程序中,使用 OpenCvSharp 实现图像的膨胀(Dilation)和腐蚀(Erosion)操作。
需要在项目中添加 OpenCvSharp 库。可以通过 NuGet 来安装:
OpenCvSharp4
,并点击“安装”。OpenCvSharp4.Extensions
,点击“安装”。OpenCvSharp4.runtime.win
,点击“安装”。Button
控件,命名为 btnLoadImage
,文字设为“加载图像”Button
控件,命名为 btnDilation
,文字设为“膨胀”Button
控件,命名为 btnErosion
,文字设为“腐蚀”PictureBox
控件,命名为 pic
,用于显示图像。C#using System;
using System.Windows.Forms;
using OpenCvSharp;
using OpenCvSharp.Extensions;
C#private Mat sourceImage; // 用于存储加载的图像
首先实现从文件加载图像并在 PictureBox 中显示。
C#private void btnLoadImage_Click(object sender, EventArgs e)
{
OpenFileDialog openFileDialog = new OpenFileDialog();
openFileDialog.Filter = "Image Files|*.jpg;*.jpeg;*.png;*.bmp";
if (openFileDialog.ShowDialog() == DialogResult.OK)
{
sourceImage = Cv2.ImRead(openFileDialog.FileName, ImreadModes.Color);
pic.Image = BitmapConverter.ToBitmap(sourceImage);
}
}
接下来,实现图像的膨胀操作,并显示在 PictureBox 中。
C#private void btnDilation_Click(object sender, EventArgs e)
{
if (sourceImage == null)
{
MessageBox.Show("请先加载图像!");
return;
}
Mat dilatedImage = new Mat();
// 定义结构元素
Mat element = Cv2.GetStructuringElement(MorphShapes.Rect, new OpenCvSharp.Size(5, 5));
// 膨胀操作
Cv2.Dilate(sourceImage, dilatedImage, element);
pic.Image = BitmapConverter.ToBitmap(dilatedImage);
}
最后,实现图像的腐蚀操作,并显示在 PictureBox 中。
C#private void btnErosion_Click(object sender, EventArgs e)
{
if (sourceImage == null)
{
MessageBox.Show("请先加载图像!");
return;
}
Mat erodedImage = new Mat();
// 定义结构元素
Mat element = Cv2.GetStructuringElement(MorphShapes.Rect, new OpenCvSharp.Size(5, 5));
// 腐蚀操作
Cv2.Erode(sourceImage, erodedImage, element);
pic.Image = BitmapConverter.ToBitmap(erodedImage);
}
运行你的 WinForm 程序。
点击“加载图像”按钮,选择一张图像。
点击“膨胀”按钮,查看膨胀后的图像效果。
点击“腐蚀”按钮,查看腐蚀后的图像效果。
通过以上步骤,可以在 C# WinForm 应用中方便地使用 OpenCvSharp 库实现图像的形态学处理操作。希望这篇文章对你在 C# WinForm 项目中使用 OpenCvSharp 有所帮助!
本文作者:rick
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!