Ubuntu20.04编译opencv-cuda

Ubuntu20.04编译opencv3.4.9 with CUDA10.2 support

先前在编译opencv的时候,没有CUDA支持,本文介绍了opencv3.4.9添加CUDA支持的编译过程。

OPENCV使用CUDA的文档可以参考:https://docs.opencv.org/3.4.9/da/d2c/tutorial_table_of_content_gpu.html

编译前的准备工作:;

  1. 从nvidia官网上下载Video_Codec_SDK,下载地址为https://developer.nvidia.com/designworks/video_codec_sdk/downloads/v8.2-ga2

  2. 解压其中的Video_Codec_SDK_8.2.16/Samples/NvCodec/NvDecoder中的两个头文件cuviddec.hnvcuvid.h,并将其放在/usr/local/cuda/include/路径下。

  3. 分别修改以下文件:

/path/to/opencv3.4.9/sources/modules/cudacodec/src/precomp.hpp
/path/to/opencv3.4.9/sources/modules/cudacodec/src/cuvid_video_source.hpp
/path/to/opencv3.4.9/sources/modules/cudacodec/src/video_decoder.hpp
/path/to/opencv3.4.9/sources/modules/cudacodec/src/video_parser.hpp
/path/to/opencv3.4.9/sources/modules/cudacodec/src/frame_queue.hpp

将其中的#if CUDA_VERSION >= 9000改为 #if CUDA_VERSION >= 9000 && CUDA_VERSION < 10000

编译过程

打开cmake-gui。配置source和build分别为:
/home/wyx/software/opencv3.4.9/sources
/home/wyx/software/opencv3.4.9/build/x64/LinuxBuildCUDA
其中LinuxBuildCUDA文件夹需要自己创建

随后按照以下流程:
点击Configure,选择gcc和g++编译器为7.x版本,一般是/usr/bin/gcc-7/usr/bin/g++-7
WITH_CUDA: 勾选
WITH_CUBLAS: 勾选
CUDA_FAST_MATH: 勾选
ENABLE_FAST_MATH: 勾选
CUDA_GENERATION: 选择Turing,不同的显卡具有不同的架构,在我的电脑上面是GTX 1650,图灵架构,因此选择Turing。

在第一次点击Configure后,最好留意一下缺失哪些库,缺失的库根据自己的需要选择安装。比如tesseract在我的环境下是用不上的,我就取消勾选了。

随后再次点击Configure,再点击Generate。

执行以下命令编译:

$ cd /home/wyx/software/opencv3.4.9/build/x64/LinuxBuildCUDA
$ make

因为加入了cuda,这个编译过程相当漫长,可能需要几个小时。

编译完成之后,看你的环境是否需要对编译的结果进行安装,安装使用以下命令:

$ sudo make install

注意,这一步操作会覆盖掉你本地安装的其他opencv版本,比如在我的环境下就覆盖掉了先前的opencv without cuda版本。

How to use opencv-cuda in vscode

实际上由于opencv-cuda已经被安装了,所以vscode里面针对opencv-cuda的编译链接的过程和一般的cpp文件编译链接过程一样-lopencv_world参数大法好。

示例文件:

// opencv_cuda.cpp
#include <opencv2/core/cuda.hpp>
#include <iostream>

using namespace std;

int main()
{

    int gpu_count = cv::cuda::getCudaEnabledDeviceCount();
    cout << gpu_count << endl;
    return 0;
}
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
安装OpenCV 3.2在Ubuntu 20.04上需要按照以下步骤进行操作: 1. 首先,安装必要的依赖环境。可以使用以下命令安装所需的依赖项: ``` sudo apt-get install build-essential cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev ``` 2. 下载OpenCV 3.2和OpenCV_contrib-3.2。你可以从GitHub上下载原始版本,或者从其他可靠的来源下载修改和编译好的文件。 3. 使用cmake配置编译选项。在终端中进入OpenCV源代码目录,并执行以下命令: ``` cmake -D CMAKE_EXE_LINKER_FLAGS=-lcblas -D WITH_TBB=ON -D WITH_OPENMP=ON -D WITH_IPP=ON -D WITH_CUDA=OFF -D ENABLE_CXX11=1 -D BUILD_EXAMPLES=ON -DCMAKE_BUILD_TYPE=Release -DOPENCV_GENERATE_PKGCONFIG=ON -DCMAKE_INSTALL_PREFIX=/usr/local/opencv32 -DOPENCV_EXTRA_MODULES_PATH=/path/to/opencv_contrib/modules -D ENABLE_PRECOMPILED_HEADERS=OFF .. ``` 请确保将上述命令中的`/path/to/opencv_contrib/modules`替换为你下载的OpenCV_contrib-3.2的路径。 4. 编译和安装OpenCV。在终端中执行以下命令: ``` make -j$(nproc) sudo make install ``` 完成上述步骤后,你应该成功地在Ubuntu 20.04上安装了OpenCV 3.2。你可以在终端中运行`pkg-config --modversion opencv`命令来验证安装是否成功。 #### 引用[.reference_title] - *1* *2* [Ubuntu20.04编译安装opencv3.2和opencv_contrib-3.2](https://blog.csdn.net/qq_41721951/article/details/124047966)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [Ubuntu 20.04 安装opencv3.2.0 及报错解决方法](https://blog.csdn.net/whyaxxttxs/article/details/131583187)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值