当前位置: 首页 > news >正文

【01】OpenCV C#——C#开发环境OpenCvSharp 环境配置 工程搭建 及代码测试

文章目录

  • 一、OpenCV 介绍
  • 二、OpenCvSharp 介绍
  • 三、OpenCvSharp环境搭建
    • 3.1 创建新项目
    • 3.2 添加 NuGet组件
    • 3.3 代码测试
    • 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开发

OpenCv官网

  • 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)算法。

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

三、OpenCvSharp环境搭建

3.1 创建新项目

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

3.2 添加 NuGet组件

推荐用Visual Studio 的 NuGet,直接安装,快速,维护也方便。
安装下面三个基本的组件,如果要开发更多应用,可再安装其他:

  • OpenCvSharp4
  • OpenCvSharp4.runtime.win
  • OpenCvSharp4.Extensioins

方法:在VS项目界面:项目->管理NuGet程序包;在出现的新界面中搜索 opencvsharp,找到上面三个组件下载即可自动安装;
在这里插入图片描述

在这里插入图片描述

动画教程参考
在这里插入图片描述

3.3 代码测试

测试代码,看是否Opencv包可以正常调用:

只需添加一句

using OpenCvSharp;

static void Main(string[] args)中添加

            //创建一张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);

在这里插入图片描述
完整代码

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学习网站,有一些实用文章与代码。

https://learnopencv.com/

THE BEST DOCUMENT MANAGEMENT SYSTEM 315SOFT.COM

OpenCv C#开发环境配置参考:

C# - Opencv应用(1) 之VS下环境配置详解

C#,OpenCv开发指南(01)——C#开发环境OpenCvSharp的安装、搭建与可视化教程

http://www.dtcms.com/a/311789.html

相关文章:

  • 【QT】Qt信号与槽机制详解信号和槽的本质自定义信号和槽带参数的信号和槽
  • 计算机网络:为什么IPv6没有选择使用点分十进制
  • 数据结构初学习、单向链表
  • Python 字典为什么查询高效
  • 数据结构---概念、数据与数据之间的关系(逻辑结构、物理结构)、基本功能、数据结构内容、单向链表(该奶奶、对象、应用)
  • SpringBoot3.x入门到精通系列:2.2 依赖注入与IoC容器
  • Spring AI MCP 服务端
  • 边缘智能网关在水务行业中的应用—龙兴物联
  • 沿街晾晒识别准确率↑32%:陌讯多模态融合算法实战解析
  • P2415 集合求和
  • Docker 镜像打包为 ZIP 文件便于分享和转发
  • linux ext4缩容home,扩容根目录
  • 【Kubernetes】Secret配置管理,安全管理敏感配置
  • Effective C++ 条款17:以独立语句将newed对象置入智能指针
  • Python 程序设计讲义(50):Python 的可迭代对象与迭代器
  • Flutter基础知识
  • SpringBoot与TurboGears2跨栈、整合AI服务、智能客服路由系统整合实战
  • SpringCloud学习第一季-4
  • 第15届蓝桥杯Python青少组中/高级组选拔赛(STEMA)2024年3月10日真题
  • 17、原坐标变换和逆变换在实战中用法
  • 无人机数字图传技术的前沿探索与应用
  • 【昇腾推理PaddleOCR】生产级部署方式
  • 机器学习实战:KNN算法全解析 - 从原理到创新应用
  • LangChain框架入门05:输出解析器使用技巧
  • SpringBoot 服务器配置
  • Json简单的实现
  • 【Android】RecyclerView实现新闻列表布局(1)适配器使用相关问题
  • 【Leetcode】2561. 重排水果
  • 【Django】-6- 登录用户身份鉴权
  • 知识随记-----Qt 实战教程:使用 QNetworkAccessManager 发送 HTTP POST