• OPENCV3.4.6+ RTX2060+VS2017编译记录


    注:本来一开始用的346版本,结果出问题;换成了3.4.16

    一、显卡加速环境准备

    默认安装的英伟达显卡驱动是没有配置显卡加速的。

    要在程序中可以使用显卡加速需要先配置环境

    需要准备:

    1.显卡 rtx 2060(如何查看显卡是否支持硬件加速并选择合适的软件版本

    2.英伟达CUDA Toolkit: cuda_11.1.1_456.81_win10.exe

    3.CUDNN:cudnn-windows-x86_64-8.4.0.27_cuda11.6-archive.zip

    注意:此处并不是最新版本就是最合适的!!一定要根据显卡的型号选择,否则白搭。而且在安装cuda tool kit的时候最好只安装 cuda部分,驱动等其他都不要勾选,否则会遇到鼠标键盘不好使等奇怪的问题

    二、opencv 编译

    1.点击config

    配置选择如下,vs选择2015 或者2017均可,其他有问题,而且必须要选择64bit

    2 点击finish后开始自动生成

    搜索cuda后,如下图勾选 with_cuda

    然后再次点击config,并等待出错

    3.

    如果顺利生成跳过此条

    如果提示download XXX失败

    就直接再次点击config,已经config过的会直接跳过,知道所有的都下载完成

     4.点击生成

    报错

    CMake Error: The following variables are used in this project, but they are set to NOTFOUND.
    Please set them or make sure they are set and tested correctly in the CMake files:
    CUDA_nppicom_LIBRARY (ADVANCED)

     出现这个问题原因:

    用cmake编译OpenCV的时候,出现错误“CUDA_nppicom_LIBRARY (ADVANCED)”,如这个链接(https://gitlab.kitware.com/cmake/cmake/-/commit/1d9f2f9714af3cd9f43975456c4be03c2df463ad)
    所述:在CUDA 11.0中,移除了这个库。但是CMAKE好像没及时更新。因此,信息不同步,导致报错。
    ————————————————
    版权声明:本文为CSDN博主「ipanda_zll」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/ipanda_huanhuan/article/details/107341173

    解决办法:

    cmake 的commit记录一年前就已经发现并在后期解决了此问题

    修改策略是 修改opencv 目录 sources\cmake\FindCUDA.cmake

    直接搜索文件 nppicom

    修改为下图的样子

    也就说,当cuda 版本大于11的时候不载再使用nppicom\

    至此啊,最好再重新开始config一遍,

    然后generate就很快成功。

    生成了opencv.sln

    用vs2017打开 opencv.sln

    选择项目-生成,又是一堆报错

    我不理解!

    突然我想起了一件事,这个opencv346的源码是很早以前的了,大概是2019年的,所以难怪cmake的文件是错的,我最近嫌弃新下载麻烦就直接复制了之前下载的这个包。好了,这旧版本我不伺候了,重新下载了最新的3.4.16的源码,这次志在必得!

    然后我就吭哧吭哧的下载完了新版3.4.16,然后径直去找cmake\FindCUDA.cmake文件,

    结果这里的还是没改,索性我直接把整行注释了,反正我这也不会安装别的版本的cuda

    然后重新config,报下载错误,

    然后重新config,此处我的网络感觉变菜了,下载了好一会儿。下载完成后点击generate,

    点击生成的opencv.sln然后点击vs生成,等待一小时,生成完成。至此结束。

    至于3.4.6版本为什么生成失败,不清楚。

    生成完成后发现目录和之前的opencv目录不一样,找不到lib什么的

    还需要点击 解决方案>cmake target>install 右键仅用于项目>仅生成项目install.

    稍等片刻,生成完成后就会在看到多了一个install文件夹,里面的就是我们之前需要的lib文件和头文件。

    但是由于我们在cmake的时候没有勾选 BUILD_opencv_world所以导致我们没有生成opencv_world.lib而是很多散装的lib文件,好处是可以减少体积,坏处是略麻烦,需要自己手动更改附加项依赖。

    倒数第二步:将opencv添加到环境变量,只需要lib和bin即可

     最后一步,测试一下:

    新建一个控制台项目,添加刚刚编译的opencv作为项目属性。执行以下代码。

    1. int a = cuda::getCudaEnabledDeviceCount();
    2. cout <<"显卡可加速数量:" <<a << endl; \\1
    3. waitKey(0);

    如上,显示是1,就证明配置成功。

    总结:

    之前generate配置错了,选择了32bit,然后导致生成出错,重新config的时候在cmake左上角点击清除缓存后最后把build目录下的东西也删除掉

  • 相关阅读:
    2023南京财经大学计算机考研信息汇总
    Java(类和对象笔记)
    如何进行数据库备份
    【20221114】【每日一题】复原IP地址
    重新认识一下@Async,开启异步之路
    OpenCV C++双目三维重建:双目摄像头实现双目测距
    leetcodeTop100(32) 合并链表数组
    充气泵方案设计-汽车打气泵PCBA
    javaweb中的servlet注解
    kettle从入门到精通 第五十三课 ETL之kettle MQTT/RabbitMQ consumer实战
  • 原文地址:https://blog.csdn.net/u012422524/article/details/125000920