本文主要介绍Win10使用VS2019从源码编译OpenCV 4.4,并使用opencv_contrib支持CUDA 11.0 + Cudnn 8.0,以及对python3的支持。

1 首先准备安装环境

Microsoft Visual Studio 2019

可以用社区版,免费的。

CUDNN 8.0

下载解压后,分别将cuda/include, cuda/lib, cuda/bin三个目录中的内容拷贝到C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.0对应的include, lib, bin目录下。

配置cudnn 8.0

CMake

选择最新版windows版,如cmake-3.18.1-win64-x64.msi,下载完成后直接安装。

(可选) Anaconda3

如果需要把opencv配置到虚拟环境的python3的话,可以使用Anaconda/Miniconda来解决。

(可选) ffmpeg

选择Shared,下载后将bin文件夹所在的路径添加到环境变量Path。

2 下载源代码并修改

打开opencv的源代码目录,找到./opencv/3rdparty/ippicv/ippicv.cmake这个文件,将第47行

"https://raw.staticdn.net/opencv/opencv_3rdparty/${IPPICV_COMMIT}/ippicv/"

中的raw.githubusercontent.com改成raw.staticdn.net。

同样的,./opencv/3rdparty/ffmpeg/ffmpeg.cmake的第25行的网址改为:

"https://raw.staticdn.net/opencv/opencv_3rdparty/${FFMPEG_BINARIES_COMMIT}/ffmpeg/"

对于opencv_contrib,同样的操作,修改以下配置代码:

./opencv_contrib/modules/xfeatures2d/camke/download_boostdesc.cmake

# 第27行改为"https://raw.staticdn.net/opencv/opencv_3rdparty/${OPENCV_3RDPARTY_COMMIT}/"

./opencv_contrib/modules/xfeatures2d/camke/download_vgg.cmake

# 第21行改为"https://raw.staticdn.net/opencv/opencv_3rdparty/${OPENCV_3RDPARTY_COMMIT}/"

./opencv_contrib/modules/face/CMakeLists.txt

# 第19行改为"https://raw.staticdn.net/opencv/opencv_3rdparty/${__commit_hash}/"

3 运行cmake

打开cmake,设置源代码路径(刚刚下载的opencv代码所在文件夹)和build路径(需要自己新建build的文件夹),然后点击Configure,会弹窗让选择VS版本,这里选择vs2019,其他选项默认,点击Finish完成,然后等待即可。

cmake的设置

之后需要配置一些选项。这几个需要打勾:

BUILD_opencv_world

WITH_CUDA

WITH_CUDNN

如果没有的话,使用Add Entry手动添加。

Add Entry

在OPENCV_EXTRA_MODULES_PATH这个选项中,需要添加刚刚下载的opencv_contrib的源码路径下的modules目录,注意这里必须把所有的"\"改成"/"才能正确配置。例如:

D:/ProgramData/opencv/opencv_contrib/modules

如果需要配置python3的话,需要注意,BUILD_opencv_python2设置成False,BUILD_opencv_python3设置成True,如果这两项没有的话,直接使用Add Entry添加。

然后配置路径,根据自己的Anaconda以及使用的虚拟环境来设置,例如:

PYTHON3_EXECUTABLE=D:/ProgramData/miniconda3/envs/pytorch/python.exe

PYTHON3_INCLUDE_DIR=D:/ProgramData/miniconda3/envs/pytorch/include

PYTHON3_LIBRARY=D:/ProgramData/miniconda3/envs/pytorch/libs/python38.lib

PYTHON3_NUMPY_INCLUDE_DIRS=D:/ProgramData/miniconda3/envs/pytorch/Lib/site-packages/numpy/core/include

PYTHON3_PACKAGES_PATH=D:/ProgramData/miniconda3/envs/pytorch/lib/python3.8/Lib/site-packages

如果电脑上有ffmpeg的话,还需要给WITH_FFMPEG打勾,如果没有的话,直接使用Add Entry添加。

接下来再次Configure,等待大约2-3分钟,直到下方出现Configuring done。

然后点击Generate,生成项目文件,大约需要30秒,直到下方出现Generating done。

检查输出信息中和配置相关的内容,如python的路径设置,CUDA和Cudnn相关信息,ffmpeg设置等。

4 使用VS2019编译源码

点击CMake中的Open Project或者打开build文件夹中的OpenCV.sln,然后根据需要把配置选成Debug x64和Release x64,点击Build --> Rebuild Project,接下来根据电脑配置的不同需要等待大约3-4个小时来编译。

Build

编译好后,找到解决方案目录里的CMakeTargets项展开的INSTALL项,右键 --> Project Only --> Build Only INSTALL。

Build Only INSTALL

之后会在./opencv/build/install/x64/vc16生成编译好的库。

到此编译完成。

最后把bin路径添加到环境变量Path,如:

D:\ProgramData\opencv\build\install\x64\vc16\bin

(取决于你配置的地址)

5 验证opencv是否可用,并运用vs2019在C/C++项目中使用

打开vs2019,新建项目,添加一个调用opencv的源代码,如果没有的话,可以用自带sample中的cpp文件,如:

D:\ProgramData\opencv\samples\cpp\example_cmake\example.cpp

在VS2019中的项目属性设置,选择Release x64,在VC++目录中添加Include Directories (根据自己的编译路径改一下):

D:\ProgramData\opencv\build\install\include

vs2019项目设置

然后在Linker --> Input --> Additional Dependencies 中,添加

opencv_world440.lib

Additional Dependencies

接下来就可以编译运行在vs2019中的项目了。如果是自带的sample,会显示摄像头实时画面,并出现"Hello OpenCV"的文字。

6 验证opencv的python接口是否已经配置好

打开python (如果用anaconda,进入相应的虚拟环境,然后输入python),在命令行运行:

import cv2

cv2.__version__

返回'4.4.0'即表示opencv已配置python接口。

python中验证opencv是否安装好

python opencv调用cuda_Win10使用VS2019从源码编译OpenCV 4.4 + CUDA 11.0 + Cudnn 8.0 + python3相关推荐

  1. 源码编译OpenCV卡在ippicv

    源码编译OpenCV卡在ippicv 1. 需求和来源 2. 解决办法 2.1 手动下载 2.2 修改相关配置 2.3 重新cmake 1. 需求和来源 源码编译OpenCV时,需要ippicv_20 ...

  2. Linux环境下Arm端源码编译OpenCV+ncnn目标检测模型实例运行调试完整实践记录

    今天需要在嵌入式设备端运行C的程序,里面有依赖OpenCV的部分,这就需要编译安装好OpenCV才行,这个对于我来说还是比较陌生的,我很少用C,所以这里面也没少折腾,一路上遇上了很多的报错,这里我将完 ...

  3. odroid-xu4(ubuntu mate 16.04)源码编译opencv 3.2

    硬件平台:odroid-xu4 软件环境:ubuntu mate 16.04 1.更新软件列表: $sudo apt-get update 2.安装依赖包: $apt-get install libq ...

  4. Android源码编译全过程记录(基于最新安卓5.1.0)【转】

    本文转载自:http://blog.csdn.net/drg1612/article/details/44802533 我的编译条件: 1 Ubuntu Kylin 14.04 长期支持版 下载地址 ...

  5. win10 Opencv4.5.0源码编译支持CUDA加速

    目录 一.环境: 二.资源准备 三.release版编译 四.debug版编译 五.测试opencv-cuda能否使用 一.环境: VS2015 Cmake 二.资源准备 1.下载opencv4.5. ...

  6. Jetson Nano 源码编译安装PySide6

    背景 最近要将一个使用PySide6写GUI的程序部署到英伟达Jetson Nano上.原本以为装个conda就能很快装好环境,结果发现arm的生态有点太糟糕了,啥都要自己编译安装,尤其是这个Pysi ...

  7. cmake 编译curl源码_OpenCV4.0 源码编译

    之前写过几篇关于OpenCV的博客,都是基于openCV 3.14写的,10月份OpenCV发布了4.0的bate版本,我就切换到4.0版本上来.之后的博客都会是基于4.0版本的.本文主要介绍一下三个 ...

  8. 【已解决】ubuntu 16.04 源码编译opencv4.5.1 报错 “../../lib/libopencv_imgcodecs.so.4.5.0: undefined reference t”

    源码编译opencv可参考教程:在ubuntu下安装opencv4.1.0详细步骤https://blog.csdn.net/weixin_44003563/article/details/90404 ...

  9. Tomcat8源码编译及导入Eclipse中研究

    最近因为需求需要修改Tomcat中的某些功能,无奈只能研究那部分源码然后稍作修改. 目前Tomcat最新版是8.0,下载了源码包,编译并导入Eclipse中研究比较方便. 1. Tomcat8源码编译 ...

最新文章

  1. Java - 框架之 SpringBoot 攻略day01
  2. python字符串符号替换punctuation
  3. 如何给邮件添加背景颜色
  4. 转载:React Fiber架构(浅显易懂)
  5. ActiveReports报表控件教程之单元格合并
  6. Nginx反向代理的使用
  7. 《Look at Boundary: A Boundary-Aware Face Alignment Algorithm 》阅读笔记
  8. android 火箭动画,利用动画模拟火箭发射场景
  9. 大家觉得现在最赚钱的电商形式是什么?
  10. HTML:表格、表单和rem
  11. Mysql授权允许远程访问
  12. 贪吃蛇速度变快c语言程序,简单贪吃蛇C语言程序
  13. 通达OA2017版 手机签章会撑大表格的处理
  14. matlab中或者的表达,MATLAB
  15. 2020上半年DeFi行业研究报告-Part2 发行 | TokenInsight
  16. App Tamer for Mac
  17. 机器学习算法学习——RBF算法原理图解
  18. AToken全观:情人节妹子收了520个BTC,成吨狗粮灌到饱
  19. Linux基础(维护基本存储空间)
  20. Linux shell:脚本编写快速入门

热门文章

  1. css动漫效果库,Animate.css功能强大的纯CSS3动画库 - 资源分享
  2. python3.5怎么打开一个文件,Python3.5入门学习记录-File
  3. CentOS(rsync+crond实现定时备份)
  4. xlsxwriter php,Xlsxwriter
  5. 基于JAVA+SpringMVC+Mybatis+MYSQL的网上零食商城管理系统
  6. 基于JAVA+SpringMVC+Mybatis+MYSQL的大学生校园兼职平台
  7. python 多列对齐_python – 如何连接两个数据帧并在这样的特定列上对齐?
  8. mysql1045错误解读_谈谈MYSQL ERROR 1045 错误的解决办法!
  9. [******] 链表问题:将单向链表按某值划分成左边小、中间相等、右边大的形式...
  10. 完美世界:笔试题(最小漂流船只数累计,主城之间的最小距离迪杰斯特拉)...