Linux下源码编译带cuda的opencv-3.x.x

目的:Linux下源码编译带cuda的opencv-3.x.x
环境:
系统: Centos 7.5 x64
环境: Gefore rtx2080
      Cuda 10.0
      cmake 3.6.2
      gcc g++ 4.8.5
      opencv:3.4.0 3.3.0

问题分析:

开发过程中会经常需要使用opencv环境问题,由于项目使用的opecv with cuda版本(opencv3.4.0和3.3.0),所以以这两个版本为例编译,其他版本类似。

如果主机环境还没有安装Nvidia驱动和CUDA,则可以参考这个链接(https://blog.csdn.net/Alger_magic/article/details/111355340),也可以自行搜索查找安装方式安装。

解决步骤:

1. opencv源码下载

1.1 源码下载
下载链接(https://opencv.org/releases/)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

补充说明:截至目前opencv最新版本为4.5.0/3.4.12,可在页面底部翻页寻找所需要的版本,然后选择source下载即可。

1.2 copy并解压
把源码copy到指定主机上的自定义路径,解压,准备编译。

在这里插入图片描述


2. 编译opencv3.4.0 with cuda

2.1 编译配置。
2.2.1 cd到源码目录,如下:
在这里插入图片描述

2.2.2 mkdir build_cuda,新建一个build_cuda文件夹。cd build_cuda进入该文件夹,然后执行cmake命令进行配置:

一般编译的话,只需要配置install路径、cuda选项打开、显卡架构选择等即可。

cmake  -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local/opencv-3.4.0 -D WITH_TBB=ON -D WITH_V4L=ON -D WITH_QT=OFF -D WITH_OPENGL=ON -D WITH_CUDA=ON -D CUDA_GENERATION="Auto" -D ENABLE_FAST_MATH=1 -D CUDA_FAST_MATH=1 -D CUDA_NVCC_FLAGS="-D_FORCE_INLINES" ..


// ps: 显卡架构的话就可以直接填架构类型,或者直接填"Auto"
在实际使用过程中可能会需要用到:
一、 如果需要使用到opencv_contrib包,则需要单独下载opencv_contrib源码并配置使用,这样编译出来的opencv库就会包含contrib的一些功能包。
cmake  -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local/opencv-3.4.0  -D WITH_TBB=ON -D WITH_V4L=ON -D WITH_QT=OFF -D WITH_OPENGL=ON -D WITH_CUDA=ON -D CUDA_GENERATION="Auto" -D ENABLE_FAST_MATH=1 -D CUDA_FAST_MATH=1 -D CUDA_NVCC_FLAGS="-D_FORCE_INLINES" -D WITH_CUBLAS=1 -D OPENCV_EXTRA_MODULES_PATH=/opencv源码目录/opencv_contrib-3.3.0/modules -D BUILD_opencv_hdf=ON ..

下载opencv_contrib对应版本,然后配置即可
https://github.com/opencv/opencv_contrib/releases
在这里插入图片描述

二、有时候编译的opencv里面会使用到hdf5,也需要单独下载hdf5并编译安装后配置到opencv里。

hdf5下载链接:https://support.hdfgroup.org/ftp/HDF5/prev-releases/,下载对应版本即可,下载慢的可以从文末链接获取(需要资源分为0)
在这里插入图片描述

hdf5安装指令:

tar zxvf hdf-1.8.21.tar.gz
cd hdf-1.8.21
./configure --prefix=/usr/local/hdf5-1.8.21
make
sudo make install

然后再进行配置opencv, 也可以简单的将hdf5 加入系统环境变量即可。

cmake  -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local/opencv-3.4.0  -D WITH_TBB=ON -D WITH_V4L=ON -D WITH_QT=OFF -D WITH_OPENGL=ON -D WITH_CUDA=ON -D CUDA_GENERATION="Auto" -D ENABLE_FAST_MATH=1 -D CUDA_FAST_MATH=1 -D CUDA_NVCC_FLAGS="-D_FORCE_INLINES" -D WITH_CUBLAS=1 -D OPENCV_EXTRA_MODULES_PATH=/opencv源码目录/opencv_contrib-3.3.0/modules -D BUILD_opencv_hdf=ON -D HDF5_INCLUDE_DIRS=/usr/local/hdf5-1.8.21/inlcude  -D HDF5_C_INCLUDE_DIR=/usr/local/hdf5-1.8.21/inlcude -D HDF5_hdf5_cpp_LIBRARY_RELEASE=/usr/local/hdf5-1.8.21/lib ..
三、如果想要编译opencv_world.so,则只需要再编译选项的最后加上-D BUILD_opencv_world=ON 即可。

FAQ:
  1. 编译过程中可能由于缺少某些依赖库或者内容,那么只需要根据错误提示来进行安装缺少的对应内容即可。
  1. 查看当前显卡详情及支持的算力。
    在cuda的安装目录下(本机例usr/local/cuda-10.0/extras/demo_suite/), 执行deviceQuery, 来查看
    /usr/local/cuda-10.0/extras/demo_suite/deviceQuery
    在这里插入图片描述
  1. 编译过程中提示代码文件中有额外的乱字符,如图类似这种
    在这里插入图片描述
    解决办法:copy部分字符,然后在整个目录中进行搜索
    ,原因因该是某个cmake文件中额外输入了或者错误添加了错误字符,导致在cmake …的时候将代码文件给污染了。去除这些无用字符,重新cmake …即可。
  1. 编译过程中提示如下错误
    在这里插入图片描述
    问题原因:cuda9.0+不支持2.0架构
    解决方案:待完善
  1. 使用cuda10.0+时提示找不到#include <dynlink_nvcuvid.h>,解决办法:
    在源码中搜索出所有的if CUDA_VERSION >= 9000,然后改为:#if CUDA_VERSION >= 9000 && CUDA_VERSION < 10000
  1. 提示类似如图错误
    在这里插入图片描述
    原因是在opencv_contrib文件夹中缺少了boostdesc_bgm_bi.i 等文件,需要下载补充进去。
    在这里插入图片描述
    以本机为例,补充文件放置的路径为:opencv_contrib-3.3.0/modules/xfeatures2d/src;文件下载地址为:https://my.oschina.net/mengyoufengyu/blog/3070868
    也可以直接从文末上传资源包中获取(需要积分为0)
  1. 同上也会有错误提示缺少vgg_generated_64.i等文件,也是补充在同一个目录opencv_contrib-3.3.0/modules/xfeatures2d/src,下载地址同上,同时文末上传资源包中也有。
    在这里插入图片描述

csdn上传资源:

hdf5-1.8.21
https://download.csdn.net/download/Alger_magic/14003424

hdf5-1.10.7
https://download.csdn.net/download/Alger_magic/14003407

vgg_genearted / boostdesc_binboost
https://download.csdn.net/download/Alger_magic/14003460

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 要配置Python中的OpenCV CUDA加速,需要按照以下步骤进行操作。 首先,确保你安装了支持CUDA的NVIDIA显卡驱动程序,并且你的显卡支持CUDA加速。可以在NVIDIA官方网站上找到相应的驱动程序。 接下来,确保你已经安装了适合你系统的CUDA Toolkit。可以在NVIDIA开发者网站上下载并安装最新版本的CUDA Toolkit。 然后,你需要下载并安装适合你系统的OpenCV库,它需要支持CUDA。你可以从OpenCV官方网站下载适合你的操作系统的最新版本的OpenCV。 安装完OpenCV后,打开Python交互式环境或者你常用的Python IDE。 导入cv2模块:`import cv2` 检查你的OpenCV是否被正确编译为支持CUDA加速的版本。你可以执行以下代码来确认CUDA是否被正确集成到你的OpenCV中: ``` print(cv2.getBuildInformation()) ``` 在输出的文本中,查找是否有"CUDA_ARCH_BIN"和"CUDA"等相关信息,这表明你的OpenCV已经成功支持CUDA加速。 现在,你可以使用OpenCV的运算函数来进行CUDA加速。在执行这些函数之前,你需要先在代码中进行CUDA设备的初始化: ``` cv2.cuda.getDevice() ``` 这将返回系统上的CUDA设备编号。 你还可以指定使用的CUDA设备: ``` cv2.cuda.setDevice(device_id) ``` 其中,`device_id`是你希望使用的CUDA设备的编号。 最后,你可以使用OpenCVCUDA加速功能来进行图像处理、计算机视觉等任务。在调用相关函数之前,确保你已经在代码中导入了相应的模块。 以上就是配置Python中OpenCVCUDA加速的步骤,希望对你有所帮助! ### 回答2: 要在Python中配置OpenCV CUDA加速,首先需要确保已经正确安装了CUDAOpenCV库。 1. 安装CUDA:首先下载并安装适合您系统的CUDA驱动程序。安装完成后,验证CUDA是否成功安装,可以通过在命令行中输入`nvcc --version`命令来检查。 2. 安装OpenCV:可以使用pip安装OpenCV库,确保所安装的是支持CUDAOpenCV版本。可以在命令行中输入以下命令进行安装: ``` pip install opencv-python ``` 3. 配置环境变量:确保正确配置环境变量,将CUDA相关路径添加到系统路径中。在Windows系统中,可以在控制面板的“系统和安全”>“系统”>“高级系统设置”>“环境变量”中进行配置。在Linux或者Mac系统中,可以编辑`~/.bashrc`或者`~/.bash_profile`文件,添加如下路径: ```bash export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH ``` 4. 检查CUDA设备:使用以下代码片段来检查CUDA设备是否可用: ```python import cv2 if cv2.cuda.getCudaEnabledDeviceCount() > 0: print("CUDA设备可用") else: print("未检测到CUDA设备") ``` 5. 使用CUDA加速:在使用OpenCV相关功能时,可以使用CUDA来加速处理。OpenCV中提供了很多支持CUDA的函数,例如GPU加速的图像处理、特征提取等。只需将相应的操作放在cuda模块下即可实现CUDA加速。例如,使用CUDA加速图像处理可以使用以下代码: ```python import cv2 img = cv2.imread('image.jpg') img_gpu = cv2.cuda_GpuMat() img_gpu.upload(img) img_gpu_gray = cv2.cuda.cvtColor(img_gpu, cv2.COLOR_BGR2GRAY) img_gray = img_gpu_gray.download() ``` 通过以上步骤,您可以成功配置Python中的OpenCV CUDA加速。 ### 回答3: 要配置Python中的OpenCV CUDA加速,需要按照以下步骤进行操作。 首先,确保你已经安装了支持CUDA的NVIDIA显卡驱动程序。然后,下载并安装适用于你的显卡型号的CUDA工具包。安装完成后,将CUDA的安装路径添加到系统的环境变量中。 接下来,下载OpenCV的源代码并解压。进入解压后的文件夹,在命令行中执行以下命令来创建一个构建目录: ``` mkdir build cd build ``` 然后,执行以下命令来生成构建配置: ``` cmake -D WITH_CUDA=ON -D CUDA_ARCH_BIN=<Compute Capability> -D CUDA_ARCH_PTX=<Compute Capability> .. ``` 在这个命令中,`<Compute Capability>`应该替换成你的显卡的计算能力。你可以在NVIDIA的官方网站上查找你的显卡型号对应的计算能力。例如,如果你的显卡是GeForce GTX 1080,那么计算能力应该是`6.1`。 接着,执行以下命令来编译和安装OpenCV: ``` make -j8 sudo make install ``` 在这个命令中,`-j8`表示使用8个线程来加速编译过程。你可以根据自己的系统配置选择合适的线程数。 最后,执行以下命令来验证CUDA加速是否成功配置: ``` python import cv2 print(cv2.cuda.getCudaEnabledDeviceCount()) ``` 如果输出的值大于0,说明CUDA加速已经成功配置。你现在可以使用OpenCV的GPU功能来加速你的Python代码了。 以上就是配置Python中OpenCV CUDA加速的步骤。根据你的系统和显卡型号可能会有些差异,但基本流程是相同的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值