编辑
2025-09-26
C#
00

目录

摘要
正文

摘要

在WinForms应用程序中使用C#和OpenCvSharp进行图片裁剪,可以创建一个简单的WinForms界面来实现这个功能。

Mat类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 库

image.png

image.png

一个例子

image.png

C#
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(); } }

截取图型区域

image.png

C#
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; }

本文作者:技术老小子

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!