C#使用OpenCVSharp常用图片常用操作
666号特派员
编辑于 2023年07月11日 08:23

    其中Python对openCV的支持很高,相对C#支持就差很多,这里经过多次测试在c#​中可以使用openCV的一些简单方法。

    具体如下:

  1. 引入库(因为opencv对环境的要求比较高,所以选择4.2左右的版本即可,下载的时候需要安装两个库)

需要安装OpenCVSharp4和opencvSharp.runtime.win库

均选择4.2上下的版本

代码块
C#
自动换行
复制代码
// 导入库
using OpenCvSharp;
using OpenCvSharp.Extensions;
复制成功

打开图片并展示

代码块
C#
自动换行
复制代码
// 读取一张图片
Mat srcImage = new Mat("C:/Users/niuji/Desktop/haha/img (1).jpg");
Cv2.ImShow("Demo", source);
Cv2.WaitKey(0);
复制成功

Bitmap转Mat

代码块
C#
自动换行
复制代码
// Bitmap 读取图片
Bitmap bmp = new Bitmap("C:/Users/niuji/Desktop/haha/img (1).jpg");

// 转换为Mat
Mat source = bmp.ToMat();
复制成功

压缩图片

代码块
C#
自动换行
复制代码
Bitmap bmp = new Bitmap("C:/Users/niuji/Desktop/haha/img (1).jpg");

// 转换为Mat
Mat source = bmp.ToMat();
// 创建压缩图片
Mat resized = new Mat();
//压缩
Cv2.Resize(source, resized, new OpenCvSharp.Size(source.Cols / 3, source.Rows / 3), 0, 0, InterpolationFlags.Linear);
复制成功

图形绘制

代码块
C#
自动换行
复制代码
Bitmap bmp = new Bitmap("C:/Users/niuji/Desktop/haha/img (1).jpg");

// 转换为Mat
Mat source = bmp.ToMat();

OpenCvSharp.Point[][] points = {
    new OpenCvSharp.Point[] { new OpenCvSharp.Point(50, 50), new OpenCvSharp.Point(50, 100), new OpenCvSharp.Point(100, 100) },
    new OpenCvSharp.Point[] { new OpenCvSharp.Point(200, 50), new OpenCvSharp.Point(250, 50), new OpenCvSharp.Point(250, 150), new OpenCvSharp.Point(200, 150) }
};
// 绘制多边形
Cv2.Polylines(source, points, true, Scalar.Red, 3);
复制成功

其中的语法和python类似,但是本身支持不是很好,在很多项目中只做简单的图像处理,比如转换图片的话,不做复杂的操作,其中比较繁琐的就是最开始opencvsharp包的导入。