OpenCV 4.12.0
开源计算机视觉
加载中...
搜索中...
无匹配项
使用 CUDA 为 Tegra 构建 OpenCV

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

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

支持 CUDA 的 Tegra 版 OpenCV

本文档是关于为 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 工具包的安装。

本文档侧重于构建 OpenCV 的 3.1.0 版本,但这里的指导原则也可能适用于从 Git 仓库的 master 分支构建。OpenCV 2.4.13 版本的构建在某些 CMake 选项上存在差异,这些差异在下面的 构建 OpenCV 2.4.X 部分中进行了总结。

大多数配置命令都基于系统已安装 CUDA 8.0。对于 Jetson TK1,使用的是较旧的 CUDA,因为该平台不支持 8.0。这些说明也可能适用于旧版本的 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 命令应用一些上游更改。第一个是应用一个专门针对 CUDA 8.0 版本构建的修复,该修复不属于 3.1.0 版本:

# 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 Extra

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 参数,用于指定要使用的并行线程数。这取决于系统、可用内存量、其他运行进程等。下表提供了此参数的建议值:

Platform建议值注意事项
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 的手册页以查看完整集合),如果您希望传递其中任何一个,可以通过在 make 命令行参数 ARGS 中指定它们来完成:

$ 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 额外模块和代码。本指南的此部分仅适用于您想要构建纯净版 OpenCV 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 的 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控制是否从 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选择构建类型(发布版 vs. 开发版)通常为 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启用将 C 示例文件作为 make install 的一部分进行安装
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。保留所有权利。