OpenCV 4.11.0
开源计算机视觉库
加载中…
搜索中…
无匹配项
为 Tegra 构建支持 CUDA 的 OpenCV

上一篇教程: 基于 ARM 的 Linux 系统的交叉编译
下一篇教程: 图像入门

原作者Randy J. Ray
兼容性OpenCV >= 3.1.0
警告
本教程已过期。

用于 Tegra 的支持 CUDA 的 OpenCV

本文档是关于构建支持 CUDA 的 OpenCV 库以在 Tegra 环境中使用的基本指南。它涵盖了从三个 (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 等平台的交叉编译。原生编译过程更简单,而交叉编译通常更快。

目前,本文档仅关注原生编译。

获取源代码

有两种 (2) 方法可以获取 OpenCV 源代码

本指南重点介绍使用 git 存储库。这是因为 3.1.0 版本的 OpenCV 必须应用 git 存储库中的一些小的上游更改才能与 CUDA 8.0 一起构建。

OpenCV

从`opencv`存储库开始

# Clone the opencv repository locally:
$ 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`命令应用一些上游更改。首先是应用一个修复程序,用于专门使用 3.1.0 版本中未包含的 8.0 版本 CUDA 进行构建

# While still in the opencv directory:
$ git cherry-pick 10896

您将看到命令的以下输出

[v3.1.0 d6d69a7] GraphCut deprecated in CUDA 7.5 and removed in 8.0
 Author: Vladislav Vinogradov <[email protected]>
 1 file changed, 2 insertions(+), 1 deletion(-)

其次,针对在某些系统上存在问题的 CMake 宏调用进行修复

$ git cherry pick cdb9c

您应该看到类似的输出

[v3.1.0-28613 e5ac2e4] gpu samples: fix REMOVE_ITEM error
 Author: Alexander Alekhin <[email protected]>
 1 file changed, 1 insertion(+), 1 deletion(-)

最后需要解决的上游修复与开发包 ( `libopencv-dev` ) 捆绑的`pkg-config`配置文件有关

$ git cherry-pick 24dbb

您应该看到类似的输出

[v3.1.0 3a6d7ab] pkg-config: modules list contains only OpenCV modules (fixes #5852)
 Author: Alexander Alekhin <[email protected]>
 1 file changed, 7 insertions(+), 4 deletions(-)

此时,`opencv`存储库已准备好进行构建。

OpenCV 扩展

`opencv_extra`存储库包含 OpenCV 库的额外数据,包括测试和演示程序使用的数据文件。必须单独克隆它

# In the same base directory from which you cloned 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
# And, optionally:
$ 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 绑定(但不是 Python 3)。如果你想要 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 绑定(但不是 Python 3)。

构建 OpenCV

一旦 `cmake` 完成 OpenCV 的配置,构建将使用标准的 `make` 实用程序完成。

使用 `make` 构建

调用 `make` 只需要一个参数,即 `-j` 参数,用于指定要使用的并行线程数。这取决于系统以及可用的内存量、其他正在运行的进程等。下表提供了此参数的建议值。

平台建议值备注
DRIVE PX 26
Jetson TK13 如果构建由于编译器相关的错误而失败,请尝试使用较少的线程数重新尝试。如果系统自上次重启以来运行了很长时间,请考虑重启系统。
Jetson TX14
Ubuntu 桌面7 实际值会因你拥有的内核数和物理内存量而异。由于编译 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"

在此示例中,向 `ctest` 传递了两个 (2) 个参数:`--verbose` 和 `--parallel 3`。第一个参数导致 `ctest` 的输出更详细,第二个参数导致 `ctest` 并行运行多达三个 (3) 个测试。与为构建选择线程数一样,任何用于测试的选择都应基于可用的处理器内核数、物理内存等。某些测试确实尝试分配大量内存。

测试中的已知问题

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

注意:没有测试在没有 CUDA 的情况下通过,但在包含 CUDA 时却失败。

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

安装 OpenCV

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

$ make install

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

构建 OpenCV 2.4.X

如果你希望构建你自己的 2.4 版 OpenCV 版本,只需要进行少量调整。在撰写本文时,2.4 树上的最新版本是 2.4.13。这些说明可能适用于 2.4 的更高版本,但尚未针对任何早期版本进行测试。

注意:2.4.X OpenCV 源代码不包含已上游到 3.X 版本 OpenCV 的 Tegra 的额外模块和代码。本指南的这一部分仅适用于你想要构建 2.4 的普通版本的案例。

选择 2.4 源代码

首先,你必须选择正确的源分支或标签。如果你想要特定版本,例如 2.4.13,则需要基于标签创建一个本地分支,就像上面使用 3.1.0 标签所做的那样。

# Within the opencv directory:
$ git checkout -b v2.4.13 2.4.13

# Within the opencv_extra directory:
$ 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的绑定,因此在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控制是否从3rdparty目录中的源代码构建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选择构建类型(发布版或开发版)通常为ReleaseDebug
CMAKE_INSTALL_PREFIX/usr设置库和头文件的安装根目录
CUDA_ARCH_BIN不同设置编译代码的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/testdataopencv_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支持

版权所有 © 2016,NVIDIA CORPORATION。保留所有权利。