OpenCV 4.13.0
Open Source Computer Vision
読み込み中...
検索中...
見つかりません
🤖 AIによる機械翻訳(非公式) — これは OpenCV 4.13.0 公式リファレンス(英語)を AI (Claude) で自動翻訳したものです。訳に誤りを含む場合があります。正確な情報は 公式英語版(原文) を参照してください。
CUDA対応Tegra向けOpenCVのビルド

前のチュートリアル: ARM ベースの Linux システム向けのクロスコンパイル
次のチュートリアル: 画像を扱う最初のステップ

原著者Randy J. Ray
互換性OpenCV >= 3.1.0
警告
このチュートリアルは非推奨である。

Tegra 向けの CUDA 対応 OpenCV

この文書は、Tegra 環境で使用するための CUDA サポート付き OpenCV ライブラリのビルドに関する基本ガイドである。バージョン 3.1.0 のライブラリを、次の3種類のプラットフォーム向けにソースコードからビルドする基本的な要素を扱う:

  • NVIDIA DRIVE™ PX 2 (V4L)
  • NVIDIA® Tegra® Linux Driver Package (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 の場合は、そのプラットフォームでは 8.0 がサポートされていないため、より古い CUDA を使う。これらの手順は古いバージョンの CUDA でも動作する場合があるが、テストされているのは 8.0 のみである。

ネイティブコンパイルとクロスコンパイルに関する注意

OpenCV のビルドシステムは、サポートされているすべてのプラットフォームでのネイティブコンパイルに加え、ARM などのプラットフォーム向けのクロスコンパイルもサポートしている。ネイティブコンパイルのプロセスはより単純であり、一方クロスコンパイルは一般により高速である。

現時点では、この文書はネイティブコンパイルのみに焦点を当てている。

ソースコードの入手

OpenCV のソースコードを入手するには2つの方法がある:

このガイドではgitリポジトリの利用に焦点を当てる。これは、OpenCV 3.1.0版がgitリポジトリ上のいくつかの小さなupstream変更を適用しないと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 コマンドで適用しなければならないupstream変更がいくつかある。その最初のものは、3.1.0リリースに含まれていなかった、特にCUDA 8.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 <vlad.vinogradov@itseez.com>
 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 <alexander.alekhin@itseez.com>
 1 file changed, 1 insertion(+), 1 deletion(-)

必要となる最後のupstream修正は、開発者パッケージ(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 <alexander.alekhin@itseez.com>
 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

必要なパッケージをインストールするには、次のコマンドをシェルに貼り付ければよい:

$ 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ベースのプラットフォーム向けの例では継続文字も追加しており、例をそのままシェルにコピー・ペーストできるようになっている。これらのコマンドを手で入力する場合は、コマンドとオプションを1行として入力すること。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_python2BUILD_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 8.0ではなくCUDA 6.5を使用する。

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 Desktop Linux の設定

サポート対象プラットフォーム:

  • Ubuntu Desktop Linux 14.04 LTS
  • Ubuntu Desktop 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はビルド手順の詳細を表示しない。各コンパイル単位などの詳細を確認したい場合は、詳細出力(verbose)を有効にできる。

$ make -j6 VERBOSE=1

OpenCVのテスト

ビルドが正常に完了したら、OpenCVが提供する豊富なテスト群を実行することもできる。opencv_extra リポジトリをクローンしておらず、cmake の呼び出しで testdata へのパスを指定していない場合は、テストの実行は推奨しない。

Linux上でのテスト

Linux上で基本的なテストを実行するには、次を実行する。

$ make test

これはOpenCVリポジトリ内のCTest構文で指定されたとおりにテストを実行するため、ctest を実行する。ctest ハーネスは多数のさまざまなパラメータを取り(ここに列挙するには多すぎるため、全体を確認するにはCTestのマニュアルページを参照のこと)、それらを渡したい場合は、ARGS という make コマンドラインパラメータで指定することで渡せる。

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

この例では、2つの引数が ctest に渡されている。--verbose--parallel 3 である。最初の引数は ctest の出力をより詳細にし、2番目の引数は 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ソースには、OpenCVの3.X系にアップストリームされた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 1つだけである。加えて、3.1.0にはない2.4の機能を制御するビルド関連のパラメータがある。このパラメータは BUILD_opencv_nonfree である。

構成は依然として、opencv および 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_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_EXAMPLESONC/C++のサンプルをビルドするかどうかを制御する
BUILD_JASPEROFFJasperライブラリ(libjasper)を 3rdparty ディレクトリ内のソースからビルドするかどうかを制御する
BUILD_JPEGOFF上記と同様、libjpeg に対するもの
BUILD_PNGOFF上記と同様、libpng に対するもの
BUILD_TBBOFF上記と同様、tbb に対するもの
BUILD_TIFFOFF上記と同様、libtiff に対するもの
BUILD_ZLIBOFF上記と同様、zlib に対するもの
BUILD_JAVAOFFOpenCVのJavaバインディングのビルドを制御するJavaバインディングをビルドするには、OpenCVライブラリが静的リンク専用としてビルドされている必要がある
BUILD_opencv_nonfreeOFF非フリー(非オープンソース)の要素のビルドを制御する2.4.Xのビルドにのみ使用する
BUILD_opencv_pythonONOpenCV 2.4.XにおけるPython 2バインディングのビルドを制御する2.4.Xのビルドにのみ使用する
BUILD_opencv_python2ONOpenCV 3.1.0におけるPython 2バインディングのビルドを制御する2.4.Xでは使用しない
BUILD_opencv_python3OFFOpenCV 3.1.0 における Python 3 バインディングのビルドを制御する2.4.Xでは使用しない
CMAKE_BUILD_TYPEReleaseビルドの種類(リリース版か開発版か)を選択する通常は Release または Debug のいずれかである
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_NEONONARM チップ向けに NEON SIMD 拡張命令の使用を有効にするARM プラットフォームでのビルド時にのみ指定する
ENABLE_PRECOMPILED_HEADERSOFFプリコンパイル済みヘッダのサポートを有効・無効にする一部の ARM プラットフォームでのみ指定する
INSTALL_C_EXAMPLESONmake install の一部として C のサンプルファイルのインストールを有効にする
INSTALL_TESTSONmake install の一部としてテストのインストールを有効にする
OPENCV_TEST_DATA_PATH../opencv_extra/testdataopencv_extra リポジトリ内の testdata ディレクトリへのパス
WITH_1394OFFIEEE-1394 サポートを含めるかどうかを指定する
WITH_CUDAONCUDA サポートを含めるかどうかを指定する
WITH_FFMPEGONFFMPEG サポートを含めるかどうかを指定する
WITH_GSTREAMEROFFGStreamer 1.0 サポートを含めるかどうかを指定する
WITH_GSTREAMER_0_10OFFGStreamer 0.10 サポートを含めるかどうかを指定する
WITH_GTKONGTK 2.0 サポートを含めるかどうかを指定するLinux プラットフォームでのみ指定し、Microsoft Windows では指定しない
WITH_OPENCLOFFOpenCL ランタイムサポートを含めるかどうかを指定する
WITH_OPENEXROFFOpenEXR を介した ILM サポートを含めるかどうかを指定する
WITH_OPENMPOFFOpenMP ランタイムサポートを含めるかどうかを指定する
WITH_TBBONIntel TBB サポートを含めるかどうかを指定する
WITH_VTKOFFVTK サポートを含めるかどうかを指定する

Copyright © 2016, NVIDIA CORPORATION. All rights reserved.