用C#和OpenCvSharp实现图片裁剪功能,WinForms应用程序C# OpenCvSharp 图形处理

发布时间:2024-07-29 14:41:22 浏览量:282次

摘要


想要在WinForms应用程序中使用C#和OpenCvSharp实现图片裁剪功能吗?其实很简单,只需通过一个简单的WinForms界面就可以完成这个任务。

Mat类是OpenCvSharp中用于表示图像和矩阵的核心类,你可以利用它来加载、保存、裁剪和处理图像。

  • Mat(string fileName):用于加载图像文件。
  • SaveImage(string fileName):用于将图像保存到文件。
  • Rect:用于表示矩形区域。
  • new Mat(Mat source, Rect roi):用于裁剪图像。

正文


首先需要在nuget中安装OpenCvSharp4,在此过程中记得引用OpenCvSharp4.runtime.win库,避免出现错误提醒,比如DllNotFoundException: Unable to load DLL 'OpenCvSharpExtern' or one of its dependencies。

同时,也要记得引用OpenCvSharp.Extensions库,确保可以顺利进行图片处理。

下面是一个示例代码,展示了如何进行图像裁剪操作:

private void btnCrop_Click(object sender, EventArgs e){    Mat sourceImage;    // 将Image对象转换为Mat对象    Mat matFromImage = BitmapConverter.ToMat(new Bitmap(pic.Image));    if(matFromImage!=null )    {        int x = 0;        int y = 0;        int width = 100;        int height = 100;           x =int.Parse( txtPostion.Text.Split(",")[0]);        y = int.Parse(txtPostion.Text.Split(",")[1]);        Rect cropRegion = new Rect(x, y, width, height);        Mat croppedImage = new Mat(matFromImage, cropRegion);        SaveFileDialog saveFileDialog = new SaveFileDialog();        saveFileDialog.Filter = "JPEG Image|*.jpg";        if (saveFileDialog.ShowDialog() == DialogResult.OK)        {            croppedImage.SaveImage(saveFileDialog.FileName);            MessageBox.Show("裁剪完成并保存。");        }        croppedImage.Release();    }}

除了裁剪操作,也可以对图像进行区域截取,如下代码所示:

private void btnCrop_Click(object sender, EventArgs e){    Mat sourceImage = BitmapConverter.ToMat(new Bitmap(pic.Image));    //创建一个与原始图像相同大小的黑色图像,这将作为我们的圆形掩码    Mat mask = new Mat(sourceImage.Size(), MatType.CV_8U, new Scalar(0));    //在掩码上绘制一个白色的圆形:    OpenCvSharp.Point center = new OpenCvSharp.Point(mask.Cols / 2, mask.Rows / 2); // 圆心坐标    int radius = Math.Min(mask.Cols, mask.Rows) / 2; // 半径,取图像宽度和高度的最小值的一半    Cv2.Circle(mask, center, radius, Scalar.White, -1); // -1 表示填充圆形    Mat result = new Mat();    sourceImage.CopyTo(result, mask);    //将Mat转换为Image    Bitmap bitmap = BitmapConverter.ToBitmap(result);    pictureBox1.Image= bitmap;}

以上就是关于使用C#和OpenCvSharp实现图片裁剪功能的内容,希望能为你提供帮助。

想要了解更多关于数字艺术教育的内容吗?欢迎点击点击咨询,了解火星时代教育提供的游戏设计培训、动画培训、UI设计培训等课程。

热门课程推荐

热门资讯

请绑定手机号

x

同学您好!

您已成功报名0元试学活动,老师会在第一时间与您取得联系,请保持电话畅通!
确定