系列文章目录
文章目录

OpenCvSharp简介
C#(C Sharp)是一款windows上的开发语言,其优势是开发窗口程序比较简单快捷。
OpenCV是一款常用的图像处理库,但是官方支持C++和Python。
OpenCvSharp是一款使得OpenCV支持C#开发的一个库。基于Visual Studio开发。
OpenCvSharp的开源项目地址
github地址:https://github.com/shimat/opencvsharp
当前最新版本为4.6.0
OpenCvSharp的特点
- OpenCvSharp 尽可能地以原生 OpenCV C/C++ API 风格为蓝本。
- OpenCvSharp 的许多类都实现了
IDisposable
。无需管理不安全的资源。 - OpenCvSharp 不会强迫您使用面向对象的编程风格。您还可以调用原生风格的 OpenCV 函数。
- OpenCvSharp 提供了从 Mat 转换为
Bitmap
(GDI+) 或WriteableBitmap
(WPF) 的函数。
OpenCvSharp的代码示例地址
https://github.com/shimat/opencvsharp_samples/
VS2022+Win7+OpenCvSharp4创建第一个图像处理实例hello world
创建项目
- 打开VS2022
- 创建新项目
- 创建C#-Windows-控制台,
控制台应用(.NET Framework)
项目
- 配置新项目名称为:HelloLenna,选择项目保存位置,框架选择.NET Framework 4.8,点击创建
添加OpenCvSharp引用
- 为工程添加OpenCvSharp的dll
右键项目的引用,点击管理NuGet程序包
- 在浏览页签,输入框中输入OpenCvSharp,在结果列表里选择
OpenCvSharp4.Windows
,然后点击中间的安装按钮
- 点击OK,确认安装
输出窗口提示已完成:
引用里已经自动添加了相关的引用:
查看引用的OpenCvSharp属性可以看到dll所在的路径:
源码解析
using OpenCvSharp;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace HelloLenna
{
internal class Program
{
static void Main(string[] args)
{
var src = new Mat("lenna.png", ImreadModes.Grayscale);
var dst = new Mat();
Cv2.Canny(src, dst, 50, 200);
using (new Window("src image", src))
using (new Window("dst image", dst))
{
Cv2.WaitKey();
}
}
}
}
拷贝lenna.png图片到bin\debug\文件夹下:
- 源码解析:
// 添加OpenCvSharp命名空间using
using OpenCvSharp;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace HelloLenna
{
internal class Program
{
static void Main(string[] args)
{
// 创建源图Mat对象,加载lenna.png图像,加载的模式为灰度图
var src = new Mat("lenna.png", ImreadModes.Grayscale);
// 创建目标图Mat对象
var dst = new Mat();
// 调用Canny算子查找源图像边缘
Cv2.Canny(src, dst, 50, 200);
// 用窗口src image显示源图像
using (new Window("src image", src))
// 用窗口dst image显示目标图像
using (new Window("dst image", dst))
{
// 等待键盘输入,退出程序
Cv2.WaitKey();
}
}
}
}
运行效果
- F5执行效果:
源码工程及资源下载
百度网盘
链接:https://pan.baidu.com/s/1oqah10VJ6Iy3XXqdbu9exg?pwd=1234
提取码:1234