OpenCV介绍:其他平台——使用 CUDA 为 Tegra 构建 OpenCV OpenCV v4.8.0

上一个教程 : 基于 ARM 的 Linux 系统的交叉编译

下一个教程 : 图像入门

原作者Randy J. Ray
兼容性OpenCV >= 3.1.0

警告
本教程已过时。

使用 CUDA 的 OpenCV for Tegra

本文档是在 Tegra 环境中构建支持 CUDA 的 OpenCV 库的基本指南。它涵盖了从源代码为三(3)种不同类型的平台构建 3.1.0 版本库的基本要素:

  • NVIDIA Drive™ PX 2 (V4L)
  • NVIDIA® Tegra® Linux 驱动程序软件包 (L4T)
  • 桌面 Linux(Ubuntu 14.04 LTS 和 16.04 LTS)

本文档并未详尽介绍构建 OpenCV 时可用的所有选项。具体来说,它涵盖了构建每个平台时使用的基本选项,但不包括任何不需要的选项(或与默认值相同的选项)。此外,这里也不包括 CUDA 工具包的安装。

本文档侧重于构建 3.1.0 版本的 OpenCV,但此处的指导原则也适用于从 git 仓库的主分支构建。在构建 OpenCV 2.4.13 版本时,CMake 的某些选项有所不同,下文将在构建 OpenCV 2.4.X 部分对此进行总结。

大多数配置命令都基于系统已安装 CUDA 8.0 的情况。在 Jetson TK1 的情况下,由于该平台不支持 8.0,因此使用了较旧的 CUDA。这些指令也可能适用于旧版本的 CUDA,但仅使用 8.0 进行了测试。

关于本地编译与交叉编译的说明

OpenCV 编译系统支持所有支持平台的本机编译,以及 ARM 等平台的交叉编译。本机编译过程更简单,而交叉编译通常更快。

目前,本文档只关注本地编译。

获取源代码

获取 OpenCV 源代码有两种方法:

本指南的重点是使用 git 仓库。这是因为 3.1.0 版本的 OpenCV 如果不应用 git 仓库中的一些上游小改动,将无法与 CUDA 8.0 一起构建。

OpenCV

从 opencv 仓库开始:

# 在本地克隆 opencv 仓库:
$ git clone https://github.com/opencv/opencv.git

要构建 3.1.0 版本(而不是构建最新的源代码),必须签出基于 3.1.0 标签的分支:

cd opencv
$ git checkout -b v3.1.0 3.1.0

注意:此操作会在克隆仓库中创建一个新的本地分支。

有些上游改动必须通过 git cherry-pick 命令来应用。其中第一项改动是专门针对使用 8.0 版本的 CUDA 进行构建的修正,而这并不是 3.1.0 版本的一部分:

# 还在 opencv 目录中时:
$ git cherry-pick 10896

您将看到以下命令输出:

[v3.1.0 d6d69a7] GraphCut 在 CUDA 7.5 中被弃用,在 8.0 中被移除
 作者:Vladislav Vinograd Vladislav Vinogradov <vlad.vinogradov@itseez.com>
 更改了 1 个文件,插入 2(+),删除 1(-)

其次,还修复了在某些系统上有问题的 CMake 宏调用:

$ git cherry pick cdb9c

你应该会看到类似以下的输出

[v3.1.0-28613 e5ac2e4] gpu 样本:修复 REMOVE_ITEM 错误
 作者:Alexander Alekhin Alexander Alekhin <alexander.alekhin@itseez.com>
 1 个文件已更改,1 个插入(+),1 个删除(-)

最后一个需要修复的上游问题是与开发者软件包(libopencv-dev)捆绑的 pkg-config 配置文件:

$ git cherry-pick 24dbb

您应该会看到类似以下的输出

[v3.1.0 3a6d7ab] pkg-config: modules list contains only OpenCV modules (fixes #5852)
 作者: Alexander Alekhin Alexander Alekhin <alexander.alekhin@itseez.com>
 更改了 1 个文件,插入了 7(+),删除了 4(-)

至此,opencv 软件源已可用于构建。

OpenCV Extra

opencv_extra 资源库包含 OpenCV 库的额外数据,包括测试和演示使用的数据文件。它必须单独克隆:

# 在克隆 OpenCV 的同一基本目录下:
$ git clone https://github.com/opencv/opencv_extra.git

与 OpenCV 源代码一样,必须使用上述相同方法将源代码树设置为 3.1.0 版本。从特定标签构建时,必须在该标签下签出两个软件源。

$ cd opencv_extra
$ git checkout -b v3.1.0 3.1.0

如果不打算运行测试或安装测试数据以及示例和示例程序,可以选择不获取该版本库。如果在调用 CMake 时未引用该版本库,则不会使用它。

注意:如果您计划运行测试,有些测试希望数据存在,否则会失败。

准备工作和先决条件

要构建 OpenCV,您需要一个目录来创建配置和构建库。您还需要一些 OpenCV 依赖的第三方库。

Ubuntu Linux 的先决条件

这些是在 Linux 上为 Tegra 构建 OpenCV 的基本要求:

  • CMake 2.8.10 或更新版本
  • CUDA 工具包 8.0(也可使用 7.0 或 7.5)
  • 构建工具(make、gcc、g++)
  • Python 2.6 或更高版本

无论使用何种平台(DRIVE PX 2、桌面等),这些工具都是一样的。

在 Linux 上编译需要一些开发包:

  • libglew-dev
  • libtiff5-dev
  • zlib1g-dev
  • libjpeg-dev
  • libpng12-dev
  • libjasper-dev
  • libavcodec-dev
  • libavformat-dev
  • libavutil-dev
  • libpostproc-dev
  • libswscale-dev
  • libeigen3-dev
  • libtbb-dev
  • libgtk2.0-dev
  • pkg-config

上述某些软件包位于 Ubuntu Linux 系统的 universe 软件源中。如果尚未启用该版本库,在尝试安装上述所有软件包之前,需要执行以下操作:

$ sudo apt-add-repository universe
$ sudo apt-get update

将以下命令粘贴到 shell 中,即可安装所需的软件包:

$ sudo apt-get install (安装
    libglew-dev
    libtiff5-dev
    zlib1g-dev
    libjpeg-dev
    libpng12-dev
    libjasper-dev
    libavcodec-dev
    libavformat-dev
    libavutil-dev
    libpostproc-dev
    libswscale-dev
    libeigen3-dev
    libtbb-dev
    libgtk2.0-dev
    pkg-config

(为便于阅读,添加了换行符和续字符)。

如果希望构建 Python 绑定,还需要 Python 2 和 Python 3 的相应软件包:

  • python-dev / python3-dev
  • python-numpy / python3-numpy
  • python-py / python3-py
  • python-pytest / python3-pytest

执行此操作的命令

$ sudo apt-get install python-dev python-numpy python-py python-pytest
# 还可以选择
$ sudo apt-get install python3-dev python3-numpy python3-py python3-pytest

安装好所有必要的软件包后,就可以配置构建了。

准备构建区域

使用 CMake 系统配置构建的软件项目希望在源代码树之外进行实际构建。为了配置和构建 OpenCV,请在克隆 git 仓库的同一基本目录下创建一个名为 "build "的目录:

$ mkdir build
cd build

现在就可以配置和构建 OpenCV 了。

配置 OpenCV 以进行构建

下面为不同平台提供的 CMake 配置选项针对的是 Tegra 所需的功能。它们基于构建 OpenCV 2.4.13 时使用的原始配置选项。

OpenCV 的构建是通过 CMake 配置的。如果在不带参数的情况下运行,它会检测到它需要了解的系统信息。不过,如果 CUDA 文件不在标准位置,它可能难以找到这些文件,而且它可能会尝试编译一些你可能不想包含的选项,因此建议使用以下 CMake 调用。

在以下各小节列出的每条 cmake 命令中,都添加了换行符和缩进符,以提高可读性。在基于 Linux 平台的示例中,还添加了连续字符,以便将示例直接复制并粘贴到 shell 中。手工输入这些命令时,请将命令和选项作为一行输入。有关传递给 cmake 的参数的详细解释,请参阅 "CMake 参数参考 "部分。

对于基于 Linux 的平台,CMAKE_INSTALL_PREFIX 参数的显示值是 /usr。你可以根据系统布局将其设置为任何你想要的值。

在下面每个 cmake 调用中,最后一个参数 OPENCV_TEST_DATA_PATH 会告诉联编系统在哪里可以找到 opencv_extra 资源库提供的测试数据。如果包含了这个路径,make install 就会在安装库和示例代码的同时安装这些测试数据,而 make test 则会自动将这个路径提供给需要从中加载数据的测试。如果没有克隆 opencv_extra 资源库,请不要包含此参数。

Vibrante V4L 配置

支持的平台: Drive PX 2

$ cmake \
    -DCMAKE_BUILD_TYPE=Release \
    -DCMAKE_INSTALL_PREFIX=/usr \
    -DBUILD_PNG=OFF \
    -DBUILD_TIFF=OFF \
    -DBUILD_TBB=OFF \
    -DBUILD_JPEG=OFF \
    -DBUILD_JASPER=OFF \
    -DBUILD_ZLIB=OFF \
    -DBUILD_EXAMPLES=ON \
    -DBUILD_JAVA=OFF \
    -DBUILD_opencv_python2=ON \
    -DBUILD_opencv_python3=OFF \
    -DENABLE_NEON=ON \
    -DWITH_OPENCL=OFF \
    -DWITH_OPENMP=OFF \
    -DWITH_FFMPEG=ON \
    -DWITH_GSTREAMER=OFF \
    -DWITH_GSTREAMER_0_10=OFF \
    -DWITH_CUDA=ON \
    -DWITH_GTK=ON \
    -DWITH_VTK=OFF \
    -DWITH_TBB=ON \
    -DWITH_1394=OFF \
    -DWITH_OPENEXR=OFF \
    -DCUDA_TOOLKIT_ROOT_DIR=/usr/local/cuda-8.0 \
    -DCUDA_ARCH_BIN=6.2 \
    -DCUDA_ARCH_PTX="" \
    -DINSTALL_C_EXAMPLES=ON \
    -DINSTALL_TESTS=OFF \
    -DOPENCV_TEST_DATA_PATH=../opencv_extra/testdata \
    ../opencv

上面提供的配置会在构建过程中为 Python 2(但不包括 Python 3)构建 Python 绑定。如果您想要 Python 3 的绑定(或不想要 Python 2 的绑定),请根据需要更改 BUILD_opencv_python2 和/或 BUILD_opencv_python3 的值。要启用绑定,请将其值设为 ON;要禁用绑定,请将其值设为 OFF

-DBUILD_opencv_python2=OFF

Jetson L4T 配置

支持的平台:

  • Jetson TK1
  • Jetson TX1

Jetson TK1 和 Jetson TX1 系统的配置略有不同。

Jetson TK1

$ cmake \
    -DCMAKE_BUILD_TYPE=Release \
    -DCMAKE_INSTALL_PREFIX=/usr \
    -DCMAKE_CXX_FLAGS=-Wa,-mimplicit-it=thumb \
    -DBUILD_PNG=OFF \
    -DBUILD_TIFF=OFF \
    -DBUILD_TBB=OFF \
    -DBUILD_JPEG=OFF \
    -DBUILD_JASPER=OFF \
    -DBUILD_ZLIB=OFF \
    -DBUILD_EXAMPLES=ON \
    -DBUILD_JAVA=OFF \
    -DBUILD_opencv_python2=ON \
    -DBUILD_opencv_python3=OFF \
    -DENABLE_NEON=ON \
    -DWITH_OPENCL=OFF \
    -DWITH_OPENMP=OFF \
    -DWITH_FFMPEG=ON \
    -DWITH_GSTREAMER=OFF \
    -DWITH_GSTREAMER_0_10=OFF \
    -DWITH_CUDA=ON \
    -DWITH_GTK=ON \
    -DWITH_VTK=OFF \
    -DWITH_TBB=ON \
    -DWITH_1394=OFF \
    -DWITH_OPENEXR=OFF \
    -DCUDA_TOOLKIT_ROOT_DIR=/usr/local/cuda-6.5 \
    -DCUDA_ARCH_BIN=3.2 \
    -DCUDA_ARCH_PTX="" \
    -DINSTALL_C_EXAMPLES=ON \
    -DINSTALL_TESTS=OFF \
    -DOPENCV_TEST_DATA_PATH=../opencv_extra/testdata \
    ../opencv

注意:这使用的是 CUDA 6.5,而非 8.0。

Jetson TX1

$ cmake \
    -DCMAKE_BUILD_TYPE=Release \
    -DCMAKE_INSTALL_PREFIX=/usr \
    -DBUILD_PNG=OFF \
    -DBUILD_TIFF=OFF \
    -DBUILD_TBB=OFF \
    -DBUILD_JPEG=OFF \
    -DBUILD_JASPER=OFF \
    -DBUILD_ZLIB=OFF \
    -DBUILD_EXAMPLES=ON \
    -DBUILD_JAVA=OFF \
    -DBUILD_opencv_python2=ON \
    -DBUILD_opencv_python3=OFF \
    -DENABLE_PRECOMPILED_HEADERS=OFF \
    -DWITH_OPENCL=OFF \
    -DWITH_OPENMP=OFF \
    -DWITH_FFMPEG=ON \
    -DWITH_GSTREAMER=OFF \
    -DWITH_GSTREAMER_0_10=OFF \
    -DWITH_CUDA=ON \
    -DWITH_GTK=ON \
    -DWITH_VTK=OFF \
    -DWITH_TBB=ON \
    -DWITH_1394=OFF \
    -DWITH_OPENEXR=OFF \
    -DCUDA_TOOLKIT_ROOT_DIR=/usr/local/cuda-8.0 \
    -DCUDA_ARCH_BIN=5.3 \
    -DCUDA_ARCH_PTX="" \
    -DINSTALL_C_EXAMPLES=ON \
    -DINSTALL_TESTS=OFF \
    -DOPENCV_TEST_DATA_PATH=../opencv_extra/testdata \
    ../opencv

注意:此配置不设置 ENABLE_NEON 参数。

Ubuntu 桌面 Linux 配置

支持的平台:

  • Ubuntu 桌面 Linux 14.04 LTS
  • Ubuntu 桌面 Linux 16.04 LTS

下面为 cmake 提供的配置选项针对的是 Tegra 所需的功能。对于桌面系统,你可能希望调整某些选项以启用(或禁用)某些功能。以下启用的功能基于 OpenCV 2.4.13 的构建。

$ cmake \
    -DCMAKE_BUILD_TYPE=Release \
    -DCMAKE_INSTALL_PREFIX=/usr \
    -DBUILD_PNG=OFF \
    -DBUILD_TIFF=OFF \
    -DBUILD_TBB=OFF \
    -DBUILD_JPEG=OFF \
    -DBUILD_JASPER=OFF \
    -DBUILD_ZLIB=OFF \
    -DBUILD_EXAMPLES=ON \
    -DBUILD_JAVA=OFF \
    -DBUILD_opencv_python2=ON \
    -DBUILD_opencv_python3=OFF \
    -DWITH_OPENCL=OFF \
    -DWITH_OPENMP=OFF \
    -DWITH_FFMPEG=ON \
    -DWITH_GSTREAMER=OFF \
    -DWITH_GSTREAMER_0_10=OFF \
    -DWITH_CUDA=ON \
    -DWITH_GTK=ON \
    -DWITH_VTK=OFF \
    -DWITH_TBB=ON \
    -DWITH_1394=OFF \
    -DWITH_OPENEXR=OFF \
    -DCUDA_TOOLKIT_ROOT_DIR=/usr/local/cuda-8.0 \
    -DCUDA_ARCH_BIN='3.0 3.5 5.0 6.0 6.2' \
    -DCUDA_ARCH_PTX="" \
    -DINSTALL_C_EXAMPLES=ON \
    -DINSTALL_TESTS=OFF \
    -DOPENCV_TEST_DATA_PATH=../opencv_extra/testdata \
    ../opencv

该配置与 V4L 和 L4T 的配置几乎相同,只是 CUDA_ARCH_BIN 参数指定了多种架构,以支持各种 GPU 板卡。对于台式机,你可以选择省略此参数,CMake 会运行一个小测试程序来探测所支持的架构。不过,生成的程序库可能无法在使用不同显卡的 Ubuntu 系统上运行。

与之前的示例一样,上面给出的配置会在构建过程中为 Python 2(但不包括 Python 3)构建 Python 绑定。

构建 OpenCV

cmake 完成对 OpenCV 的配置后,就可以使用标准的 make 工具进行构建。

使用 make 构建

调用 make 时唯一需要的参数是用于指定使用多少并行线程的 -j 参数。这取决于系统和可用内存的多少,以及其他正在运行的进程等。下表提供了该参数的建议值:

平台建议值备注
DRIVE PX 26
Jetson TK13如果因编译器相关错误导致构建失败,请使用较少的线程数重试。如果系统自上次重启后运行了很长时间,也可考虑重启系统。
Jetson TX14
Ubuntu Desktop7实际数值会因内核数和物理内存量而异。由于编译 CUDA 代码需要大量资源,建议不要超过 7。

根据您选择的值进行编译(假设您选择的是 6):

$ make -j6

默认情况下,CMake 会隐藏编译步骤的详细信息。如果需要查看每个编译单元等的更多细节,可以启用详细输出:

$ make -j6 VERBOSE=1

测试 OpenCV

编译成功后,您可以选择运行 OpenCV 提供的大量测试集。如果你没有克隆 opencv_extra 资源库,也没有在 cmake 调用中指定 testdata 的路径,那么不建议进行测试。

在 Linux 下测试

要在 Linux 下运行基本测试,请执行

$ make test

这将执行 ctest 来执行测试,正如 OpenCV 软件库中的 CTest 语法所指定的那样。ctest 工具需要许多不同的参数(太多了,这里就不一一列举了,请参阅 CTest 手册页面查看全部参数),如果您希望传递其中任何一个参数,可以在名为 ARGS 的 make 命令行参数中指定这些参数:

$ make test ARGS="--verbose --parallel 3"

在本例中,有两(2)个参数传递给 ctest:–verbose 和 --parallel 3。第一个参数会使 ctest 的输出更详细,第二个参数会使 ctest 并行运行多达三(3)个测试。与选择构建线程数一样,任何测试选择都应以可用的处理器内核数、物理内存等为基础。有些测试会尝试分配大量内存。

测试的已知问题

目前,OpenCV 测试套件中并非所有测试都能通过。有些测试无论是否编译了 CUDA 都会失败,还有一些仅针对 CUDA 的测试目前也无法通过。

注意:没有测试在未编译 CUDA 的情况下能通过,但只有在包含 CUDA 时才会失败。

由于失败测试的完整列表因平台而异,因此在此列出它们是不切实际的。

安装 OpenCV

安装 OpenCV 非常简单。对于基于 Linux 的平台,命令如下

$ make install

根据所选的安装位置,您可能需要 root 权限才能安装。

构建 OpenCV 2.4.X

如果您想构建自己的 OpenCV 2.4 版本,只需做一些调整。在撰写本文时,2.4 树上的最新版本是 2.4.13。这些说明可能适用于 2.4 的后续版本,但尚未对任何早期版本进行测试。

注意:2.4.X OpenCV 源程序不包含 Tegra 的额外模块和代码,这些模块和代码已被纳入 3.X 版本的 OpenCV 上游。本指南的这一部分仅适用于您想构建一个普通版本的 OpenCV 2.4 的情况。

选择 2.4 源代码

首先,您必须选择正确的源代码分支或标签。如果你想要一个特定的版本,比如 2.4.13,你需要根据标签创建一个本地分支,就像上面的 3.1.0 标签一样:

# 在 opencv 目录中:
$ git checkout -b v2.4.13 2.4.13
# 在 opencv_extra 目录中:
$ git checkout -b v2.4.13 2.4.13

如果您只想获得 OpenCV 2.4 版本的最新代码,版本库中已经有了 2.4 分支。您可以检查该分支,而不是特定的标签:

$ git checkout 2.4

在构建 2.4.13 源代码时,无需使用 3.1.0 中的 git cherry-pick 命令。

配置

与之前一样,配置是通过 CMake 完成的。主要区别在于,OpenCV 2.4 只为 Python 2 提供了 Python 绑定,因此在 CMake 参数中不会区分 Python 2 和 Python 3。只有一个参数,即 BUILD_opencv_python。此外,还有一个与编译相关的参数,用于控制 2.4 中的功能,而 3.1.0 中没有这些功能。这个参数就是 BUILD_opencv_nonfree

配置仍在一个单独的目录中进行,该目录必须是 opencvopencv_extra 目录的同级目录。

配置 Vibrante V4L

用于 DRIVE PX 2:

$ cmake \
    -DCMAKE_BUILD_TYPE=Release \
    -DCMAKE_INSTALL_PREFIX=/usr \
    -DBUILD_PNG=OFF \
    -DBUILD_TIFF=OFF \
    -DBUILD_TBB=OFF \
    -DBUILD_JPEG=OFF \
    -DBUILD_JASPER=OFF \
    -DBUILD_ZLIB=OFF \
    -DBUILD_EXAMPLES=ON \
    -DBUILD_JAVA=OFF \
    -DBUILD_opencv_nonfree=OFF \
    -DBUILD_opencv_python=ON \
    -DENABLE_NEON=ON \
    -DWITH_OPENCL=OFF \
    -DWITH_OPENMP=OFF \
    -DWITH_FFMPEG=ON \
    -DWITH_GSTREAMER=OFF \
    -DWITH_GSTREAMER_0_10=OFF \
    -DWITH_CUDA=ON \
    -DWITH_GTK=ON \
    -DWITH_VTK=OFF \
    -DWITH_TBB=ON \
    -DWITH_1394=OFF \
    -DWITH_OPENEXR=OFF \
    -DCUDA_TOOLKIT_ROOT_DIR=/usr/local/cuda-8.0 \
    -DCUDA_ARCH_BIN=6.2 \
    -DCUDA_ARCH_PTX="" \
    -DINSTALL_C_EXAMPLES=ON \
    -DINSTALL_TESTS=ON \
    -DOPENCV_TEST_DATA_PATH=../opencv_extra/testdata \
    ../opencv

配置 Jetson L4T

对于 Jetson TK1:

$ cmake \
    -DCMAKE_BUILD_TYPE=Release \
    -DCMAKE_INSTALL_PREFIX=/usr \
    -DBUILD_PNG=OFF \
    -DBUILD_TIFF=OFF \
    -DBUILD_TBB=OFF \
    -DBUILD_JPEG=OFF \
    -DBUILD_JASPER=OFF \
    -DBUILD_ZLIB=OFF \
    -DBUILD_EXAMPLES=ON \
    -DBUILD_JAVA=OFF \
    -DBUILD_opencv_nonfree=OFF \
    -DBUILD_opencv_python=ON \
    -DENABLE_NEON=ON \
    -DWITH_OPENCL=OFF \
    -DWITH_OPENMP=OFF \
    -DWITH_FFMPEG=ON \
    -DWITH_GSTREAMER=OFF \
    -DWITH_GSTREAMER_0_10=OFF \
    -DWITH_CUDA=ON \
    -DWITH_GTK=ON \
    -DWITH_VTK=OFF \
    -DWITH_TBB=ON \
    -DWITH_1394=OFF \
    -DWITH_OPENEXR=OFF \
    -DCUDA_TOOLKIT_ROOT_DIR=/usr/local/cuda-6.5 \
    -DCUDA_ARCH_BIN=3.2 \
    -DCUDA_ARCH_PTX="" \
    -DINSTALL_C_EXAMPLES=ON \
    -DINSTALL_TESTS=ON \
    -DOPENCV_TEST_DATA_PATH=../opencv_extra/testdata \
    ../opencv

对于 Jetson TX1

$ cmake \
    -DCMAKE_BUILD_TYPE=Release \
    -DCMAKE_INSTALL_PREFIX=/usr \
    -DBUILD_PNG=OFF \
    -DBUILD_TIFF=OFF \
    -DBUILD_TBB=OFF \
    -DBUILD_JPEG=OFF \
    -DBUILD_JASPER=OFF \
    -DBUILD_ZLIB=OFF \
    -DBUILD_EXAMPLES=ON \
    -DBUILD_JAVA=OFF \
    -DBUILD_opencv_nonfree=OFF \
    -DBUILD_opencv_python=ON \
    -DENABLE_PRECOMPILED_HEADERS=OFF \
    -DWITH_OPENCL=OFF \
    -DWITH_OPENMP=OFF \
    -DWITH_FFMPEG=ON \
    -DWITH_GSTREAMER=OFF \
    -DWITH_GSTREAMER_0_10=OFF \
    -DWITH_CUDA=ON \
    -DWITH_GTK=ON \
    -DWITH_VTK=OFF \
    -DWITH_TBB=ON \
    -DWITH_1394=OFF \
    -DWITH_OPENEXR=OFF \
    -DCUDA_TOOLKIT_ROOT_DIR=/usr/local/cuda-8.0 \
    -DCUDA_ARCH_BIN=5.3 \
    -DCUDA_ARCH_PTX="" \
    -DINSTALL_C_EXAMPLES=ON \
    -DINSTALL_TESTS=ON \
    -DOPENCV_TEST_DATA_PATH=../opencv_extra/testdata \
    ../opencv

配置桌面 Ubuntu Linux

适用于 14.04 LTS 和 16.04 LTS:

$ cmake \
    -DCMAKE_BUILD_TYPE=Release \
    -DCMAKE_INSTALL_PREFIX=/usr \
    -DBUILD_PNG=OFF \
    -DBUILD_TIFF=OFF \
    -DBUILD_TBB=OFF \
    -DBUILD_JPEG=OFF \
    -DBUILD_JASPER=OFF \
    -DBUILD_ZLIB=OFF \
    -DBUILD_EXAMPLES=ON \
    -DBUILD_JAVA=OFF \
    -DBUILD_opencv_nonfree=OFF \
    -DBUILD_opencv_python=ON \
    -DWITH_OPENCL=OFF \
    -DWITH_OPENMP=OFF \
    -DWITH_FFMPEG=ON \
    -DWITH_GSTREAMER=OFF \
    -DWITH_GSTREAMER_0_10=OFF \
    -DWITH_CUDA=ON \
    -DWITH_GTK=ON \
    -DWITH_VTK=OFF \
    -DWITH_TBB=ON \
    -DWITH_1394=OFF \
    -DWITH_OPENEXR=OFF \
    -DCUDA_TOOLKIT_ROOT_DIR=/usr/local/cuda-8.0 \
    -DCUDA_ARCH_BIN='3.0 3.5 5.0 6.0 6.2' \
    -DCUDA_ARCH_PTX="" \
    -DINSTALL_C_EXAMPLES=ON \
    -DINSTALL_TESTS=ON \
    -DOPENCV_TEST_DATA_PATH=../opencv_extra/testdata \
    ../opencv

构建、测试和安装

配置完成后,构建、测试和安装的步骤与上述 3.1.0 源码相同。

CMake 参数参考

以下表格列出了在上述推荐调用中传递给 CMake 的所有参数。其中一些是 CMake 本身的参数,而大多数是 OpenCV 特有的参数。

参数我们的默认值它的作用备注
BUILD_EXAMPLESON控制是否编译 C/C++ 示例
BUILD_JASPEROFF控制是否从第三方目录中的源代码构建 Jasper 库 (libjasper)
BUILD_JPEGOFF如上,针对 libjpeg
BUILD_PNGOFF如上,适用于 libpng
BUILD_TBBOFF如上,适用于 tbb
BUILD_TIFFOFF如上,适用于 libtiff
BUILD_ZLIBOFF如上,用于 zlib
BUILD_JAVAOFF控制 OpenCV Java 绑定的构建构建 Java 绑定要求仅构建用于静态链接的 OpenCV 库
BUILD_opencv_nonfreeOFF控制非自由(非开源)元素的构建仅用于构建 2.4.X 版
BUILD_opencv_pythonON控制 OpenCV 2.4.X 中 Python 2 绑定的构建仅用于构建 2.4.X
BUILD_opencv_python2ON控制 OpenCV 3.1.0 中 Python 2 绑定的构建在 2.4.X 中未使用。
BUILD_opencv_python3OFF在 OpenCV 3.1.0 中控制 Python 3 绑定的构建在 2.4.X 中未使用
CMAKE_BUILD_TYPERelease选择联编类型(发行版与开发版)通常为发行版或调试版
CMAKE_INSTALL_PREFIX/usr设置安装库和头文件的根目录
CUDA_ARCH_BINvaries设置编译代码所适用的 CUDA 架构通常仅适用于已知特定显卡的平台。如果不传递此参数,OpenCV 会包含一个小程序来确定系统所安装板卡的架构。对于 Ubuntu 桌面,这里的值是一个列表,以最大限度地支持显卡。
CUDA_ARCH_PTX“”为指定的虚拟 PTX 架构构建 PTX 中间代码
CUDA_TOOLKIT_ROOT_DIR /usr/local/cuda-8.0(适用于 Linux) 指定 CUDA 包含文件和库的位置
ENABLE_NEONON启用针对 ARM 芯片的 NEON SIMD 扩展仅在 ARM 平台上构建时通过
ENABLE_PRECOMPILED_HEADERSOFF启用/禁用对预编译头文件的支持仅在某些 ARM 平台上指定
INSTALL_C_EXAMPLESON作为 make install 的一部分,启用安装 C 示例文件
INSTALL_TESTSON作为 make install 的一部分,启用测试安装
OPENCV_TEST_DATA_PATH…/opencv_extra/testdata通向 opencv_extra 资源库中 testdata 目录的路径
WITH_1394OFF指定是否包含 IEEE-1394 支持
WITH_CUDAON指定是否包含 CUDA 支持
WITH_FFMPEGON指定是否包含 FFMPEG 支持
WITH_GSTREAMEROFF指定是否包含 GStreamer 1.0 支持
WITH_GSTREAMER_0_10OFF指定是否包含 GStreamer 0.10 支持
WITH_GTKON指定是否包含 GTK 2.0 支持仅适用于 Linux 平台,不适用于 Microsoft Windows。
WITH_OPENCLOFF指定是否包含 OpenCL 运行时支持
WITH_OPENEXROFF指定是否通过 OpenEXR 加入 ILM 支持
WITH_OPENMPOFF指定是否包含 OpenMP 运行时支持
WITH_TBBON指定是否包含 Intel TBB 支持
WITH_VTKOFF指定是否包含 VTK 支持
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值