文章目录
- [一、OpenCV 介绍](#一、OpenCV 介绍)
- [二、OpenCvSharp 介绍](#二、OpenCvSharp 介绍)
- 三、OpenCvSharp环境搭建
-
- [3.1 创建新项目](#3.1 创建新项目)
- [3.2 添加 NuGet组件](#3.2 添加 NuGet组件)
- [3.3 代码测试](#3.3 代码测试)
- [3.4 相较于 C++ OpenCV不同的之处](#3.4 相较于 C++ OpenCV不同的之处)
- 四、LearnOpenCV

- 有时候,单纯c#做前端时会联合C++实现的dll来落地某些功能
- 由于有时候会用C++ - Opencv实现算法后封装成dll,但是有时候会感觉麻烦,不如直接通过C#直接调用Opencv
一、OpenCV 介绍
-
OpenCV是基于Apache2.0许可(开源)发行的跨平台计算机视觉和机器学习函数库,支持Windows、Linux、Android和Mac OS操作系统。
-
OpenCV由一系列C/C++函数和少量C++类构成,利用MMX和SSE指令。
-
OpenCV实现了图像处理和计算机视觉方面的很多通用算法。
-
OpenCV支持
C++、C#、Java、Golang、Ruby和MATLAB
开发。
-
C#是开发效率最高
,代码最优雅的唯一工业软件开发语言,开发OpenCV当然必须选择C#。 -
用C#开发OpenCV与调用其他的C/C++类库是一样的路径:(1)ImportDLL;(2)Wrapper;
推荐Wrapper方式。目前最好的是 OpenCvSharp。

二、OpenCvSharp 介绍
OpenCvSharp是一个OpenCV的.Net wrapper,应用最新的OpenCV库开发,使用习惯比EmguCV更接近原始的OpenCV,有详细的使用样例供参考。该库采用LGPL发行,对商业应用友好。使用OpenCvSharp,可用C#,VB.NET等语言实现多种流行的图像处理(image processing)与计算机视觉(computer vision)算法。
cpp
1.相较于SharperCV与OpenCVDotNet,OpenCvSharp直接封装了更多的OpenCV方法,降低学习难度。
2.大部分了继承了IDisposable接口,方便使用using语句块。
3.不强加面向对象思维,可以直接调用原生风格的OpenCV方法。
4.可以将IplImage直接转为Bitmap(GDI+) 或者WriteableBitmap(WPF)。
5.支持Mono。可以运行于支持Mono的任何平台上(如Linux,BSD,Mac OS X等)。
三、OpenCvSharp环境搭建
3.1 创建新项目

3.2 添加 NuGet组件
推荐用Visual Studio 的 NuGet,直接安装,快速,维护也方便。
安装下面三个基本的组件,如果要开发更多应用,可再安装其他:
- OpenCvSharp4
- OpenCvSharp4.runtime.win
- OpenCvSharp4.Extensioins
方法:在VS项目界面:项目->管理NuGet程序包 ;在出现的新界面中搜索 opencvsharp ,找到上面三个组件下载即可自动安装;

动画教程参考
3.3 代码测试
测试代码,看是否Opencv包可以正常调用:
只需添加一句
cpp
using OpenCvSharp;
在 static void Main(string[] args)
中添加
cpp
//创建一张300*300全白图像,和读取一张本地图像,进行显示测试
var src = new Mat(new Size(300,300), MatType.CV_8U, Scalar.All(255));
Mat img = Cv2.ImRead("D:\\Projects\\Programming_test\\test_Images\\1.jpg");
Cv2.ImShow("src", src);
Cv2.ImShow("img", img);
Cv2.WaitKey(0);

完整代码
cpp
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using OpenCvSharp;
namespace CvSharp
{
class Program
{
static void Main(string[] args)
{
//创建一张128*128全白图像,和读取一张本地图像,进行显示测试
var src = new Mat(new Size(300,300), MatType.CV_8U, Scalar.All(255));
Mat img = Cv2.ImRead("D:\\Projects\\Programming_test\\test_Images\\1.jpg");
Cv2.ImShow("src", src);
Cv2.ImShow("img", img);
Cv2.WaitKey(0);
}
}
}
运行结果
如果没有添加 using OpenCvSharp
,Opencv包调用就找不到

3.4 相较于 C++ OpenCV不同的之处
-
1.这里
没有进行
包含目录、库目录、附加依赖项 等设置 -
2.Debug ,Release 模式下,支持任何CUP,不再是X86,X64选项
-
3 .ms文件 及 自动生成的配置文件
四、LearnOpenCV
印度程序员Satya Mallick制作的OpenCV学习网站,有一些实用文章与代码。
THE BEST DOCUMENT MANAGEMENT SYSTEM 315SOFT.COM
OpenCv C#开发环境配置参考: