vs2019编译opencv+contribute+gpu

2024-09-03 07:12

本文主要是介绍vs2019编译opencv+contribute+gpu,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1、提前准备

vs2019、opencv4.4.0、opencv-contribute4.4.0、CUDA Toolkit 11.8(不能高于自己电脑的CUDA版本)、CUDNN8.9.6

ps:先提前准备环境

1)cmd中查看:nvidia-smi查看自己的显卡信息,不存在下述信息的话则需先安装英伟达显卡驱动程序。

从下图可知,本机显卡驱动支持的cuda最高版本为12.2,那么只需要安装比12.2低或者相同的CUDA库即可。

需要注意的是,有些高版本的cuda不支持vs2022,比如cuda11.2最高只支持vs2019,而不支持vs2022。

2)安装CUDA及CUDNN

安装完CUDA后将CUDNN内的文件拷贝到CUDA安装文件夹,与文件夹内的合并。

指令:nvcc -V 

在控制台中输入bandwidthTest.exe及deviceQuery.exe的所在目录,如我的:

F:\installfile\NVIDIA GPU Computing Toolkit\CUDA\v11.8\extras\demo_suite

运行该程序:./bandwidthTest.exe及 ./deviceQuery.exe

出现Result = PASS信息表示成功安装CUDA及CUDNN

2、cmake配置编译选项时出现的问题

Policy CMP0148 is not set: The FindPythonInterp and FindPythonLibs modules are removed. Run "cmake --help-policy CMP0148" for policy details.

解决办法:在文件OpenCVUtils.cmake

F:\installfile\opencv4.4.0\opencv+contrib+gpu\sources\cmake\OpenCVUtils.cmake

的第一行添加

if(POLICY CMP0148) 
cmake_policy(SET CMP0148 OLD)
endif()if(POLICY CMP0146) 
cmake_policy(SET CMP0146 OLD)
endif()

3、若用vs2022编译的话可能会在编译时出现很多报错,因此改为vs2019来配置及编译。

4、配置步骤:

1)打开cmake,输入源码路径及生成工程的路径,后

2)Configure结束后,在search框里搜索并配置一些选项:

  1. 勾选 BUILD_opencv_world(它会将生成的所有库都集中在opencv_world440.lib或opencv_world440d.lib一个包中,而不是分散存放的,便于后续配置工程项目)
  2. 配置 OPENCV_EXTRA_MODULES_PATH,填写contrib源码的modules文件夹的位置,如我的:
    F:\installfile\opencv4.4.0\opencv+contrib+gpu\opencv_contrib-4.4.0\modules
  3. 搜索“cuda”,勾选 BUILD_CUDA_STUBS、OPENCV_DNN_CUDA、WITH_CUDA
  4. 勾选 ENABLE_FAST_MATH 
  5. 勾选 OPENCV_ENABLE_NONFREE
  6. 取消勾选 OpenCV_GENERATE_SETUPVARS
  7. 分别搜索“python”,“java”,“js”,“tests”,分别取消勾选所有已经勾选的python、java、js、tests相关选项

3)点击Configure进行第二次Configure

4)新配置以下

  1. 勾选 CUDA_FAST_MATH
  2. CUDA_ARCH_BIN 填写对应GPU的算力指数,如果已经有了多个值,可以把其他的值删除以加速后续编译,算力指数查询链接:CUDA GPUs - Compute Capability | NVIDIA Developer

5)再次点击Configure,同时检查一下生成信息:

没有报错的话,接着点击Generate生成工程。

6)在自己camke配置的工程目录下,打开生成的工程

  1. 选择Release(或Debug)和x64平台
  2. 右键ALL_BUILD工程,点击  生成
  3. 右键INSTALL工程,点击  仅用于项目   点击     仅生成INSTALL

至此编译结束,编译生成的文件在上述步骤二配置cmake时指定的build文件夹下的install文件夹中。

7)配置vs的opencv工程:常规的添加库目录、包含目录以及附加依赖库,并用以下代码来检验opencv库是否具备CUDA的支持

#include <opencv2/core.hpp>
#include <opencv2/core/cuda.hpp>
#include <iostream>int main() 
{std::cout << "OpenCV version: " << CV_VERSION << std::endl;// 检查是否有可用的 CUDA 设备if (cv::cuda::getCudaEnabledDeviceCount() > 0) {std::cout << "CUDA is enabled and available devices found." << std::endl;} else {std::cout << "CUDA is not enabled or no CUDA devices found." << std::endl;}return 0;
}

这篇关于vs2019编译opencv+contribute+gpu的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1132375

相关文章

conda安装GPU版pytorch默认却是cpu版本

《conda安装GPU版pytorch默认却是cpu版本》本文主要介绍了遇到Conda安装PyTorchGPU版本却默认安装CPU的问题,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的... 目录一、问题描述二、网上解决方案罗列【此节为反面方案罗列!!!】三、发现的根本原因[独家]3.1 p

Python中OpenCV与Matplotlib的图像操作入门指南

《Python中OpenCV与Matplotlib的图像操作入门指南》:本文主要介绍Python中OpenCV与Matplotlib的图像操作指南,本文通过实例代码给大家介绍的非常详细,对大家的学... 目录一、环境准备二、图像的基本操作1. 图像读取、显示与保存 使用OpenCV操作2. 像素级操作3.

C/C++中OpenCV 矩阵运算的实现

《C/C++中OpenCV矩阵运算的实现》本文主要介绍了C/C++中OpenCV矩阵运算的实现,包括基本算术运算(标量与矩阵)、矩阵乘法、转置、逆矩阵、行列式、迹、范数等操作,感兴趣的可以了解一下... 目录矩阵的创建与初始化创建矩阵访问矩阵元素基本的算术运算 ➕➖✖️➗矩阵与标量运算矩阵与矩阵运算 (逐元

C/C++的OpenCV 进行图像梯度提取的几种实现

《C/C++的OpenCV进行图像梯度提取的几种实现》本文主要介绍了C/C++的OpenCV进行图像梯度提取的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的... 目录预www.chinasem.cn备知识1. 图像加载与预处理2. Sobel 算子计算 X 和 Y

C/C++和OpenCV实现调用摄像头

《C/C++和OpenCV实现调用摄像头》本文主要介绍了C/C++和OpenCV实现调用摄像头,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录准备工作1. 打开摄像头2. 读取视频帧3. 显示视频帧4. 释放资源5. 获取和设置摄像头属性

c/c++的opencv图像金字塔缩放实现

《c/c++的opencv图像金字塔缩放实现》本文主要介绍了c/c++的opencv图像金字塔缩放实现,通过对原始图像进行连续的下采样或上采样操作,生成一系列不同分辨率的图像,具有一定的参考价值,感兴... 目录图像金字塔简介图像下采样 (cv::pyrDown)图像上采样 (cv::pyrUp)C++ O

c/c++的opencv实现图片膨胀

《c/c++的opencv实现图片膨胀》图像膨胀是形态学操作,通过结构元素扩张亮区填充孔洞、连接断开部分、加粗物体,OpenCV的cv::dilate函数实现该操作,本文就来介绍一下opencv图片... 目录什么是图像膨胀?结构元素 (KerChina编程nel)OpenCV 中的 cv::dilate() 函

qtcreater配置opencv遇到的坑及实践记录

《qtcreater配置opencv遇到的坑及实践记录》我配置opencv不管是按照网上的教程还是deepseek发现都有些问题,下面是我的配置方法以及实践成功的心得,感兴趣的朋友跟随小编一起看看吧... 目录电脑环境下载环境变量配置qmake加入外部库测试配置我配置opencv不管是按照网上的教程还是de

Android NDK版本迭代与FFmpeg交叉编译完全指南

《AndroidNDK版本迭代与FFmpeg交叉编译完全指南》在Android开发中,使用NDK进行原生代码开发是一项常见需求,特别是当我们需要集成FFmpeg这样的多媒体处理库时,本文将深入分析A... 目录一、android NDK版本迭代分界线二、FFmpeg交叉编译关键注意事项三、完整编译脚本示例四

python+OpenCV反投影图像的实现示例详解

《python+OpenCV反投影图像的实现示例详解》:本文主要介绍python+OpenCV反投影图像的实现示例详解,本文通过实例代码图文并茂的形式给大家介绍的非常详细,感兴趣的朋友一起看看吧... 目录一、前言二、什么是反投影图像三、反投影图像的概念四、反向投影的工作原理一、利用反向投影backproj