目录
5.下载OPENCV4.8和opencv_contrib-4.x
为了在WINDOWS环境中可以运行OPNECV CUDA程序,所以对OPENCV源码进行编译,增加QT和CUDA适配,并增加外部库编译。
本文还包括了CUDA驱动和CUDNN的环境配置过程。
硬件平台GTX1050TI 算力6.1
cuda版本11.4 cudnn版本为11.x
QT版本5.14.2
vs2019
1.安装显卡驱动、cuda、cudnn
显卡驱动是自带的,选常规驱动安装软件就行(360驱动大师)
通过上图看到显卡适配的cuda最大版本,注意是最大,一般别用最新的版本,我选择是11.4
到下方网站下载cuda驱动 ,选WIN10 选本地下载
得到 cudnn-windows-x86_64-8.9.2.26_cuda11-archive.zip
https://developer.nvidia.com/cuda-toolkit-archive
解压安装,选自定义安装,组件全选
安装完成后在shell里输入ncvv -V得到如下结果
接下来下载cudnn 需要账号 选择cuda11.x对应版本
下载好后解压
把里面三个文件夹的内容分别复制到
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.4\lib
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.4\include
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.4\bin
然后添加系统变量 path 以下内容,最后一项意义不大可以不添加
配置完成后,我们可以验证是否配置成功,主要使用CUDA内置的deviceQuery.exe 和 bandwidthTest.exe:
首先win+R启动cmd,cd到安装目录下的 …\extras\demo_suite,然后分别执行bandwidthTest.exe和deviceQuery.exe(进到目录后需要直接输“bandwidthTest.exe”和“deviceQuery.exe”),应该得到下图:
2.安装QT5.14.2
这个略过,教程太多
记得MINGW MSVC都要装 选64位就行
3.安装visual studio 2019
这个也略过,安装的时候记得把C++选上
4.安装Cmake
Windows下CMake安装使用_cmake window_Word哥的博客-CSDN博客
5.下载OPENCV4.8和opencv_contrib-4.x
opencv去官网下载,点source下载,别下windows的
opencv_contrib-4.x.zip 去github下载
https://github.com/opencv/opencv_contrib
分别解压成两个文件夹放在opencv目录下,再新建一个new_build文件夹
6.配置Cmake,进行编译
添加源码目录,打勾advance
点configure,选vs2019 x64
点finish等待生成
进行设置
search输入关键词找到设置选型
首先是mo,设置外部库目录
然后是cuda全打勾
QT打勾
然后是py force_lib打开
var 取消
然后再点configure
搜cuda 设置算力 这个值去网上搜你手里显卡的算力
我这里1050是6.1
然后搜QT 设置目录如下
搜math 打勾两个
搜world 打勾
搜free 打勾 不然SIFT用不了
搜opengl 打勾
再点一次 configure
然后搜CVV 取消 不然编译过不了 world和CVV这俩东西只能二选一
然后再点一下 configure
去D:\opencv\new_build\ 打开CMakeDownloadLog.txt 检查下载项是否都下载完成,这部分很难通过脚本下载,我是科学上网用浏览器一个一个复制链接下载的,全放在D:\opencv\opencv-4.8.0\.cache文件夹下,还好文件不多,累死人
下面这篇文章有办法直接下载,但我没试
Cmake 编译opencv缺少出现下载ffmpeg_ffmpeg_version.cmake_大海3004的博客-CSDN博客
有需要可以联系我提供这部分文件
全部文件识别没错是这样
然后看cmake 下方的日志
确认python是否被识别
确认cuda cudnn是否被识别
点击generate,无报错
配置完成,点击generate
点击open project打开VS工程
核心就这两个
首先右键ALL-BUILD 选生成,这个过程挺长而且容易报错,VS环境只能选2017-2019
再右键INSTALL选生成,这个很快,可以看看具体拉取了什么
编译和安装结束,核心文件都在new_builed/install里
新增WIN系统环境变量
重启计算机,适配新增变量
7.使用测试
使用VS2019进行测试
新建工程选择空白工程即可,新建main.cpp
#include <opencv2/opencv.hpp>
#include <opencv2/core.hpp>
#include <opencv2/cudaarithm.hpp>
#include <iostream>
using namespace std;
using namespace cv;
using namespace cv::cuda;
int main()
{
// OpenCV版本号
cout << "OpenCV_Version: " << CV_VERSION << endl;
// CUDA
int num_devices = getCudaEnabledDeviceCount();
if (num_devices)
cout << "CUDA is available, num_devices:" << num_devices << endl;
else
cout << "CUDA is not available." << endl;
//读取图片
Mat img = imread("D:/CUDA_ARCH_BIN.png");
imshow("picture", img);
waitKey(0);
return 0;
}
设置项目属性-VC++目录里新增包含目录和库目录
设置编译器附加库目录
设置输入 附加依赖项
忘了新增一个QT的环境变量,不然运行程序会报错缺少QT5XXX.DLL
测试结果:
备忘:
一次编译是不能同时出来debug和release版本的LIB文件的,需要编译两次,在VS2019的编译工程中切换debug和release
未能解决的问题1:
QT creator上运行上述代码还有问题,提示的是CV的函数未能定义,应该是LIB没有读进去
不知道是不是因为用msvc编译出来的.lib库与QT使用的MINGW需要的.a库对不上
目前和QT的联合开发是通过vs2019上安装QT插件来实现的,已经可以正常运行程序了,流程参考参考博客2
未能解决的问题2:
python还是不能import cv2 我反反复复试了几次INSTALL和安装卸载opencv-python
还是提示CV2模块找不到