Windows下的OpenCVSharp配置

本文介绍了如何在Windows环境下配置OpenCvSharp,并提供了使用C#进行图像处理的基本步骤。通过简单的示例程序展示了如何加载并显示一张图片。
OPenCvSharp是OpenCV的Net Warpper,应用最新的OpenCV库开发,目前放在github.。
本人认为OpenCvSharp比EmguCV使用起来更为方便,因为函数更接近于原生的OpenCV库,只要有一定的OpenCV和C#知识,就能很快得上手,开发周期较短。


Windows下的配置:(配置环境变量)
  1. 下载OpenCV,官网上下载,http://opencv.org/,这里笔者下载的是OpenCV3.1
  2. 下载相应的OpenCvSharp(链接:https://github.com/shimat/opencvsharp/releases)这里笔者下载的是:“OpenCvSharp-3.1.0-x64-20160622”(必须的,配置需要用到dll文件)以及“Sample-3.1.0-20160622”(可选,官方的例程)
  3. 配置环境变量:在“系统属性”下“高级”选项找到“环境变量”,点击进入,在“系统变量”Path变量添加OpenCV以及OpenCvSharp变量,如:
  • H:\Program_Project_Code\OpenCV_lib\OpenCvSharp-3.1.0-x64-20160622
  • H:\Program_Project_Code\OpenCV_lib\OpenCvSharp-3.1.0-x64-20160622\DebuggerVisualizers\2013
  • H:\Program_Project_Code\OpenCV_lib\opencv3.1.0\build\x64\vc12\bin
4. 重启电脑,使环境变量生效
注意:OpenCvSharp库下的“OpenCvSharp-3.1.0-x64-20160622”文件夹下的目录是VS的版本号,如:“2013”对应的是VS2013;OpenCV库下“vc12”/“vc14”是对应的VS版本,如“vc12”对应的是VS2013.

C#工程配置:
1 . 新建C#控制台程序
2. 在“解决方案资源管理器”里右击“引用”,点击左侧的“浏览”,在点击下面的“浏览”选项,添加dll文件,路径就在”OpenCvSharp-3.1.0-x64-20160622“的安装目录,一般用到什么动态连接库文件(dll文件)就添加该dll文件,其中OpenCvSharp.dll是必须的。

3.在“配置管理器”中将下面“平台”选择“x64"。(笔者用的是OpenCV3.1,64版本)

4.测试程序,在cs文件添加OpenCvSharp的引用,(using OpenCvSharp;)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using OpenCvSharp;

namespace xxxxxxxxx
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("*************************************************按q退出程序*************************************************");
while (true)
{
Mat SRC = Cv2.ImRead("xxx.png");
if (SRC.Empty())
{
Console.WriteLine("SRC is empty");
}
Cv2.NamedWindow("SRC", 0);
Cv2.ImShow("SRC", SRC);
Char key = (Char)Cv2.WaitKey(10);
if (key == 'q')
break;
}
}
}
}
本测试程序是通过加载一副图片并通过OpenCV自带的窗体显示出来,因此,务必先将一副图片发在工程的“Debug”里。(如:H:\xxxxxxxxx\xxxxxxxxx\bin\x64\Debug,注意:是“bin”,目录下的平台的“Debug”,这里是“x64”)
5.在调试过程中若出现如下情况,原因一般有二:一是在vs“配置管理器”里的平台没有选对
二是没有在“Debug”下添加一副对应文件名的图片,抛出异常。





### 编译 OpencvSharp 的 CUDA 支持 在 Windows 环境下为 OpencvSharp 编译 CUDA 支持,需要手动构建 OpenCV 并启用 CUDA 模块,然后将其与 OpenCvSharp 项目集成。由于 OpenCvSharp 对 CUDA 的支持有限,仅包括基本类型(如 `GpuMat`)和设备检测功能,因此需要深入理解 OpenCV 和 CUDA 的集成机制,并对 OpenCvSharp 的源码进行适当修改 [^2]。 ### 准备工作 确保系统中安装了以下组件: - Visual Studio(如 VS2019) - CUDA Toolkit(如 CUDA 11.0.1) - CMake - Git(用于克隆源码) CUDA Toolkit 可以从 NVIDIA 官网下载并安装。例如,选择 `cuda_11.0.1_451.22_win10` 版本进行安装 [^3]。 ### 获取源码 克隆 OpenCVOpenCvSharp 的源码仓库: ```bash git clone https://github.com/opencv/opencv.git git clone https://github.com/shineway/OpenCvSharp.git ``` 进入 OpenCV 的源码目录并创建构建目录: ```bash cd opencv mkdir build cd build ``` ### 配置 CMake 使用 CMake 配置 OpenCV 的构建,启用 CUDA 支持: ```bash cmake -G "Visual Studio 16 2019" -A x64 -DWITH_CUDA=ON -DCUDA_ARCH_BIN="7.5" -DBUILD_opencv_world=ON -DBUILD_TESTS=OFF -DBUILD_PERF_TESTS=OFF .. ``` 其中: - `-G "Visual Studio 16 2019"` 指定 Visual Studio 2019 作为生成器 - `-DWITH_CUDA=ON` 启用 CUDA 支持 - `-DCUDA_ARCH_BIN="7.5"` 根据 GPU 架构设置 CUDA 编译目标(例如 7.5 对应 Turing 架构) - 其他选项用于控制构建内容,如禁用测试模块等 ### 构建 OpenCV 在 Visual Studio 中打开生成的 `.sln` 文件,选择 `Release` 配置并构建 `ALL_BUILD` 项目。完成后,安装 OpenCV 到指定目录: ```bash cmake --build . --target INSTALL --config Release ``` ### 修改 OpenCvSharp 源码 进入 OpenCvSharp 源码目录,修改 `OpenCvSharpExtern` 项目,使其链接到新构建的 OpenCV 库文件。在 `CMakeLists.txt` 或项目设置中指定 OpenCV 的安装路径,并确保包含 CUDA 模块的头文件和库文件。 同时,检查 `OpenCvSharp` 项目中的 P/Invoke 代码,确保所有 CUDA 相关函数的绑定都已正确实现。由于 OpenCvSharp 缺乏完整的 CUDA 函数支持,可能需要从 OpenCV 源码中提取对应函数定义,并手动添加到 C# 代码中 [^2]。 ### 重新编译 OpenCvSharp 完成源码修改后,重新编译 OpenCvSharp 项目。可以使用 Visual Studio 打开解决方案文件并构建整个项目,或者通过命令行执行: ```bash msbuild OpenCvSharp.sln /p:Configuration=Release ``` 最终生成的 DLL 文件将包含 CUDA 支持,可以在 C# 应用程序中调用 GPU 加速的 OpenCV 功能。 ### 注意事项 - OpenCvSharp 对 CUDA 的支持不完整,需要自行实现缺失的函数绑定 [^2] - 确保使用的 CUDA Toolkit 与 OpenCV 版本兼容 - 构建 OpenCV 时,建议使用 `BUILD_opencv_world=ON` 选项以简化库文件管理 - 若使用 vcpkg 管理依赖项,注意其默认使用 VS2017 工具集,可能需要手动调整 [^4] ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值