Ubuntu20.04编译opencv-cuda

2023-10-29

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;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Ubuntu20.04编译opencv-cuda 的相关文章

  • 用于 C++ 中图像分析的 OpenCV 二进制图像掩模

    我正在尝试分析一些图像 这些图像的外部周围有很多噪声 但内部有一个清晰的圆形中心 中心是我感兴趣的部分 但外部噪声正在影响我对图像的二进制阈值处理 为了忽略噪音 我尝试设置一个已知中心位置和半径的圆形蒙版 从而使该圆之外的所有像素都更改为黑
  • 跟踪白色背景中的白球(Python/OpenCV)

    我在 Python 3 中使用 OpenCV 来检测白场上的白 黑球 并给出它的精确 x y 半径 和颜色 我使用函数 cv2 Canny 和 cv2 findContours 来找到它 但问题是 cv2 Canny 并不总是检测到圆的完整
  • pip install reportlab 错误:命令“x86_64-linux-gnu-gcc”失败,退出状态为 1

    使用 ubuntu 虚拟环境 我尝试安装reportlab 命令是 pip install reportlab 在这个目录下 company2 stefano stefano X550EP htdocs company2 错误是 error
  • 如何在 arago 项目构建中编写自己的食谱包

    我如何在 arago 项目构建中编写自己的食谱包 我知道它可以是 bitbake 文件 但我怎么写 不知道 我在互联网上搜索 但未能找到任何好的来源 有人可以给我提供链接或示例来开始吗 RegardsLinux 学习者 使用 Bitbake
  • 导入错误:没有名为“tensorrt”的模块

    我使用 Debian 安装在我的虚拟机上安装了 TensorRT 如果我运行 dpkg l grep TensorRT 我会得到预期的结果 ii graphsurgeon tf 5 0 2 1 cuda10 0 amd64 GraphSur
  • Linux 内核中是否使用了扩展指令集(SSE、MMX)?

    好吧 它们带来 至少应该带来 性能的巨大提升 不是吗 所以 我还没有看到任何 Linux 内核源代码 但很想问 它们是否以某种方式被使用 在这种情况下 对于没有此类指令的系统 必须有一些特殊的 代码上限 SSE 和 MMX 指令集在音频 视
  • OpenCV 中“IplImage”和“CvMat”的全称是什么?

    有一个IplImage and CvMat在 OpenCV 中 他们的全名是什么 IPL in IplImage代表英特尔处理库 这是Intel维护OpenCV时的残余 CV in cvMat代表计算机视觉矩阵 这是图形中常用的数据结构 I
  • 从 S3 存储桶下载 300 万个对象的最快方法

    我尝试过使用 Python boto 多处理 S3cmd 和 J3tset 但都在努力解决 有什么建议 也许是您一直在使用的现成脚本或我不知道的其他方式 EDIT eventlet boto 是一个有价值的解决方案 如下所述 在这里找到了一
  • 如何为自定义应用程序选择静态端口号?

    我们有一个自定义应用程序 需要在其自己的端口号上处理请求 我们真的不在乎这个数字是多少 尽管我们在决定后会坚持使用该端口 如何选择最不可能与用户系统上运行的其他应用程序或服务发生冲突的数字 我们应该遵循什么规则或标准吗 澄清 一旦我们选择了
  • 如何将发布档案转换为 git repo

    我有一个发布档案列表 MyProject 0 9 zip MyProject 1 0 zip MyProject 1 3 tar gz MyProject 2 0 tar gz 每个文件都包含一个与存档同名的文件夹 不带文件扩展名 其中包含
  • 如何在 Linux 中创建可通过 Screen 应用程序连接的 pty

    我想创建 C C 应用程序 它在 dev xxx 中创建新的 虚拟 设备 并且能够与 屏幕 应用程序连接 例如 循环运行的程序会创建新的 dev ttyABC 然后我将使用 屏幕 dev ttyABC 当我向那里发送一些字符时 应用程序将其
  • OpenCV:使用 StereoCamera 系统对颜色标记进行 3D 姿态估计

    我有一个立体摄像系统并使用两者正确校准它 cv calibrateCamera and cv stereoCalibrate My reprojection error似乎没问题 凸轮0 0 401427 凸轮1 0 388200 立体声
  • 在 bash 脚本中设置变量[重复]

    这个问题在这里已经有答案了 test sh 包含 A 1 B 2 我将 test sh 设置为 chmod 777 我用两个参数启动脚本 test sh first last 然后我通过输入以下内容对其进行了测试 echo FirstVar
  • `opencv.android.JavaCameraView` 和 `opencv.android.NativeCameraView` 有什么区别

    正如主题中所述 有什么区别opencv android JavaCameraView and opencv android NativeCameraView 与其他主要优点相比 有哪些优点可以提供更多选择 来自OpenCV 文档 http
  • 如何使用Java OpenCV

    我正在使用图像处理开始我的最后一年项目 并希望完成类似的事情this http www youtube com watch v EPai5f2sWaA 它是人体和物体检测的结合 我真的很想用 Java 来做 因为我在 C 方面的经验很少 I
  • 64 位上的 ASLR 和内存布局:是否仅限于规范部分 (128 TiB)?

    当加载启用 ASLR 的 PIE 可执行文件时 Linux 是否会限制程序段到规范部分 最多 0000 7fff ffff ffff 的映射 还是会使用完整的较低部分 起始位 0 显然 Linux 不会给你的进程提供不可用的地址 这会导致它
  • Gtk+3 &C & Glade 问题

    我尝试在 Linux 上用 C 和 Glade 制作一个简单的 Gui 程序 我编写了一个简单的程序并用 Glade 设计了一个窗口 当我运行代码时 它说 gtk test 23026 Gtk CRITICAL gtk widget sho
  • Linux中根据USB VID:PID获取设备路径

    如果我插入一个设备 比如说 dev ttyUSB0我想知道号码0基于其 VID PID 通过lsusb 我怎样才能在 C Linux 中做到这一点 我有这个代码来查找一台打印机设备 如果有帮助的话 int printer open void
  • 安装 python-dev 和链接库后,Cython 中的 Hello World 程序因 gcc 失败

    我创建了一个简单的 hello world 程序 并尝试使用 gcc 执行生成的 C 程序 但无论我做什么 我都会得到大量未定义的引用 SO 有很多类似的问题 但他们都说安装 python dev 或其某些变体 或添加用于链接和加载库的标志
  • 如何在Linux中诊断Python进程占用CPU

    我的 python 进程在自动化脚本中的某个时刻开始在基于 Linux 的系统 Ubuntu 上占用 CPU 我正在尝试在 GDB 中调试这个问题 我对 GDB 还很陌生 是否有任何 GDB 命令可以提供有关哪个线程正在使用大部分 cpu

随机推荐