![]() |
OpenCV 5.0.0
Open Source Computer Vision
|
前のチュートリアル: ARM ベースの Linux システム向けのクロスコンパイル
次のチュートリアル: 画像を扱う最初のステップ
| 原著者 | Randy J. Ray |
| 互換性 | OpenCV >= 3.1.0 |
この文書は、Tegra 環境で使用するための CUDA サポート付き OpenCV ライブラリのビルドに関する基本ガイドである。バージョン 3.1.0 のライブラリを、次の3種類のプラットフォーム向けにソースコードからビルドする基本的な要素を扱う:
この文書は 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 リポジトリから始める:
# 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ライブラリ向けの追加データが含まれている。これは別途クローンする必要がある:
# 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が依存する多数のサードパーティライブラリも必要となる。
これらは、LinuxでTegra向けにOpenCVをビルドするための基本要件である:
これらはプラットフォーム(DRIVE PX 2、デスクトップなど)に関わらず同じである。
Linuxでビルドするには、多数の開発パッケージが必要である:
上記のパッケージの一部は、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のいずれか一方または両方に対応するパッケージも必要となる:
これを行うコマンドは次のとおり:
$ 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を設定してビルドする準備が整った。
以下に示す各プラットフォーム向けの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 リポジトリをクローンしていない場合は、この引数を含めないこと。
サポート対象プラットフォーム: 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 TK1とJetson TX1のシステムでは、設定がわずかに異なる。
$ 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を使用する。
$ 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 引数を設定しない。
サポート対象プラットフォーム:
以下の 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向けはビルドしない)。
cmake によるOpenCVの構成が完了したら、標準の make ユーティリティを使ってビルドを行う。
make を使ったビルドmake の呼び出しに必要な唯一のパラメータは、並列に使用するスレッド数を指定する -j パラメータである。これはシステム、利用可能なメモリ量、他に実行中のプロセスなどによって変わる。次の表に、このパラメータの推奨値を示す。
| プラットフォーム | 推奨値 | 備考 |
|---|---|---|
| DRIVE PX 2 | 6 | |
| Jetson TK1 | 3 | コンパイラ関連のエラーでビルドが失敗する場合は、スレッド数を減らして再試行する。また、前回の再起動から長時間稼働している場合は、システムの再起動も検討する。 |
| Jetson TX1 | 4 | |
| Ubuntuデスクトップ | 7 | 実際の値は、保有するコア数と物理メモリ量によって変わる。CUDAコードのコンパイルにはリソースを要するため、7を超える値にすることは推奨しない。 |
選択した値に基づいてビルドする(ここでは6を選択したと仮定する)。
$ make -j6
デフォルトでは、CMakeはビルド手順の詳細を表示しない。各コンパイル単位などの詳細を確認したい場合は、詳細出力(verbose)を有効にできる。
$ make -j6 VERBOSE=1
ビルドが正常に完了したら、OpenCVが提供する豊富なテスト群を実行することもできる。opencv_extra リポジトリをクローンしておらず、cmake の呼び出しで testdata へのパスを指定していない場合は、テストの実行は推奨しない。
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のインストールは非常に簡単である。Linuxベースのプラットフォームの場合、コマンドは次のとおりである。
$ make install
選択したインストール先によっては、インストールにroot権限が必要になる場合がある。
OpenCVの2.4系の独自バージョンをビルドしたい場合、行わなければならない調整はわずかしかない。本稿執筆時点で、2.4ツリーの最新バージョンは2.4.13である。これらの手順は2.4の後続バージョンでも動作する可能性があるが、それより前のバージョンではテストされていない。
注: 2.4.X系のOpenCVソースには、OpenCVの3.X系にアップストリームされたTegra向けの追加モジュールやコードは含まれていない。本ガイドのこの部分は、OpenCV 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 ディレクトリと同じ階層にある別のディレクトリで行う必要がある。
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 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
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自体のパラメータだが、ほとんどはOpenCV固有のものである。
| パラメータ | 本ガイドのデフォルト値 | 機能 | 備考 |
|---|---|---|---|
| BUILD_EXAMPLES | ON | C/C++のサンプルをビルドするかどうかを制御する | |
| BUILD_JASPER | OFF | Jasperライブラリ(libjasper)を 3rdparty ディレクトリ内のソースからビルドするかどうかを制御する | |
| BUILD_JPEG | OFF | 上記と同様、libjpeg に対するもの | |
| BUILD_PNG | OFF | 上記と同様、libpng に対するもの | |
| BUILD_TBB | OFF | 上記と同様、tbb に対するもの | |
| BUILD_TIFF | OFF | 上記と同様、libtiff に対するもの | |
| BUILD_ZLIB | OFF | 上記と同様、zlib に対するもの | |
| BUILD_JAVA | OFF | OpenCVのJavaバインディングのビルドを制御する | Javaバインディングをビルドするには、OpenCVライブラリが静的リンク専用としてビルドされている必要がある |
| BUILD_opencv_nonfree | OFF | 非フリー(非オープンソース)の要素のビルドを制御する | 2.4.Xのビルドにのみ使用する |
| BUILD_opencv_python | ON | OpenCV 2.4.XにおけるPython 2バインディングのビルドを制御する | 2.4.Xのビルドにのみ使用する |
| BUILD_opencv_python2 | ON | OpenCV 3.1.0におけるPython 2バインディングのビルドを制御する | 2.4.Xでは使用しない |
| BUILD_opencv_python3 | OFF | OpenCV 3.1.0 における Python 3 バインディングのビルドを制御する | 2.4.Xでは使用しない |
| CMAKE_BUILD_TYPE | Release | ビルドの種類(リリース版か開発版か)を選択する | 通常は 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_NEON | ON | ARM チップ向けに NEON SIMD 拡張命令の使用を有効にする | ARM プラットフォームでのビルド時にのみ指定する |
| ENABLE_PRECOMPILED_HEADERS | OFF | プリコンパイル済みヘッダのサポートを有効・無効にする | 一部の ARM プラットフォームでのみ指定する |
| INSTALL_C_EXAMPLES | ON | make install の一部として C のサンプルファイルのインストールを有効にする | |
| INSTALL_TESTS | ON | make install の一部としてテストのインストールを有効にする | |
| OPENCV_TEST_DATA_PATH | ../opencv_extra/testdata | opencv_extra リポジトリ内の testdata ディレクトリへのパス | |
| WITH_1394 | OFF | IEEE-1394 サポートを含めるかどうかを指定する | |
| WITH_CUDA | ON | CUDA サポートを含めるかどうかを指定する | |
| WITH_FFMPEG | ON | FFMPEG サポートを含めるかどうかを指定する | |
| WITH_GSTREAMER | OFF | GStreamer 1.0 サポートを含めるかどうかを指定する | |
| WITH_GSTREAMER_0_10 | OFF | GStreamer 0.10 サポートを含めるかどうかを指定する | |
| WITH_GTK | ON | GTK 2.0 サポートを含めるかどうかを指定する | Linux プラットフォームでのみ指定し、Microsoft Windows では指定しない |
| WITH_OPENCL | OFF | OpenCL ランタイムサポートを含めるかどうかを指定する | |
| WITH_OPENEXR | OFF | OpenEXR を介した ILM サポートを含めるかどうかを指定する | |
| WITH_OPENMP | OFF | OpenMP ランタイムサポートを含めるかどうかを指定する | |
| WITH_TBB | ON | Intel TBB サポートを含めるかどうかを指定する | |
| WITH_VTK | OFF | VTK サポートを含めるかどうかを指定する |
Copyright © 2016, NVIDIA CORPORATION. All rights reserved.