Windows10搭建OpenCV cuda版本

准备工作
1、安装好cuda、cudnn、cmake、VIstual Studio(我这里用的2019)
2、下载OpenCV和opencv_contrib,网址:https://opencv.org/releases/中下载sources。在https://github.com/opencv/opencv_contrib/tags中下载与OpenCV对应的contrib。
在这里插入图片描述版本要与上面的对应

1、新建一个Opencv_Build文件夹,上面两个文件下载完成后,解压到此。并创建一个build文件夹,一会儿编译时会用到。
在这里插入图片描述
2、管理员身份打开cmake,设置源码路径和build路径,并勾选grouped。
在这里插入图片描述
3、点击configure选择编译器(注意:只有没有配置编译器时,才会弹出编译器配置弹框)。选择Visual Studio 16 2019及x64然后按Finish。
在这里插入图片描述
完成后,会出现下图界面
在这里插入图片描述
4、配置编译选项

  • 搜索栏搜索cuda,勾选和cuda相关选项。其中,BUILD_CUDA_STUBS不用打钩。
    在这里插入图片描述

  • 搜索WITH_TBB,勾选

  • 搜索java、python,取消选择 java 和 python 的编译选项(个人不需要)

  • 勾选 BUILD_opencv_world 最终只生成一个动态链接库方便使用

  • 搜索 OPENCV_EXTRA_MODULES_PATH ,填入 OpenCV_contrib 解压文件夹 modules 的路径
    在这里插入图片描述

  • 搜索OPENCV_GENERATE_SETUPVARS,取消选择

  • 若使用EIGN,记得勾选WITH_EIGN

再次点击 configure 按钮。要保证这个过程中不出现红色警告,不然后续编译过程会出错。常见的红色警告解决方法如下。
5、configure警告解决方法

  • 错误1:出现OpenCVUtils.cmake:144的警告。
    在这里插入图片描述
    解决方法:在源码文件夹下找到CMakeLists.txt,(见下图),打开并插入如下代码。(同理,如果出现CMP0146,也按下面方式添加即可)
    在这里插入图片描述
if(POLICY CMP0148)
    cmake_policy(SET CMP0148 OLD)
endif()

在这里插入图片描述

  • 错误2:OpenCVGenSetupVars.cmake:54
    在这里插入图片描述
    解决方法:搜索栏搜索OPENCV_GENERATE_SETUPVARS,取消选择。
  • 文件下载失败
    解决方法:在build文件夹找到CMakeDownloadLog.txt文件。如果里边有https开头的东西,说明有文件下载失败。按照给定的网址自己手动下载,下载完成后,将文件放入指令指定的文件夹下(一般是copy指令的目的文件夹)。如果没有copy指令,则需要将文件放入.cache文件夹(此文件夹的路径在CMakeDownloadLog.txt的开头,见下图2),并且需要按照MD5码-原名的格式命名(下图3)。
    在这里插入图片描述
    图1
    在这里插入图片描述
    图2
    在这里插入图片描述
    图3

6、配置算力

  • 搜索栏搜索CUDA_ARCH_BIN,并填入自己电脑的算力。
  • 如何看自己电脑的算力?
    方法1:官网查,https://developer.nvidia.com/cuda-gpus#collapseOne
    方法2:找到deviceQuery.exe,在命令行下执行。如图,可以看到算力是6.1。
    在这里插入图片描述
    在这里插入图片描述
    7、再次点击configure,没有红色警告后,点击generate,生成项目文件Opencv.sln。
    8、Vistual Studio 中打开OPenCV.sln,右击解决方案,选择批生成,勾选ALL_BUILD的Debug和Release。点击生成。(4-6个小时,慢慢等~)
    在这里插入图片描述
    9、ALL_BUILD之后,右击解决方案,选择批生成,勾选INSTALL的Debug和Release,点击生成,最终会在build文件夹下生成一个install目录,这就是我们需要的可执行文件和库。将install\x64\vc16\bin路径添加至环境变量。
    在这里插入图片描述
    10、测试
    在visual studio中新建项目,按照下图步骤,配置项目属性。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    说明:上图的附加依赖项,其实就是你的install\x64\vc16\lib中的所有lib文件。(* d.lib是debug版本,* .lib是release版本,在debug模式下只填入*d.lib即可。如果你在cmake中勾选了BUILD_opencv_world ,那你的lib文件夹中只会有world相关的链接库,将其填进附加依赖项即可。如果没有勾选BUILD_opencv_world,那你的lib文件夹下会有一堆lib,将这堆lib填进附加依赖项即可。)
    使用下列代码测试。
#include <opencv2/core/cuda.hpp>
#include <iostream>

int main()
{
    using  namespace cv;
    std::cout << cv::getBuildInformation()<<std::endl;//获取build相关的信息,比如C++编译器版本、opencv_cuda是否编译成功

    cuda::printCudaDeviceInfo(cuda::getDevice());
    int count = cuda::getCudaEnabledDeviceCount();
    printf("GPU Device Count : %d\n", count);
    printf("OpenCV version: %s\n", CV_VERSION);
 }

出现下图所示即为成功。
在这里插入图片描述

其他错误及解决办法

1、项目生成过程出现关于“test_qrcode_encode.cpp…opencv_test_objdetect”的错误。
这是编码格式造成的,双击错误,定位到出现错误的文件,然后更改文件编码格式为“简体中文(GB2312)-代码页 936”即可。至于怎么更改文件编码格式,可以参考这个:https://www.jb51.net/article/246517.htm
2、测试代码运行不成功。
错误1:No CUDA support
首先排查你调用的dll是否正确:将你的\install\x64\vc16\bin文件夹下的dll文件拷贝至项目目录。然后测试代码,如果运行成功,说明你的“C:\Windows\System32”目录(或C:\Windows\SysWOW64”目录)中存在旧的opencv文件。
若还是不成功,先在测试代码中运行std::cout << cv::getBuildInformation()<<std::endl;获取build相关的信息。查看CMake build tool或者C++ Compiler是否是你在Cmake中配置的Visual Studio(见下图)。如果不是,说明Visual Studio环境变量没有配置好。按照这篇文章配置好即可。https://blog.csdn.net/en_Wency/article/details/124767742
在这里插入图片描述
3、找不到opencv_*.dll。
解决方法:先找到opencv的dll文件目录,比如:D:\OpenCV_Build\build\install\x64\vc16\bin。
法一:将所需文件复制到“C:\Windows\System32”目录(或C:\Windows\SysWOW64”目录,如果是64位系统)
法二:将所需文件添加到项目目录中。

  • 31
    点赞
  • 48
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值