OpenCV, opencv_contrib のインストール(Ubuntu 上)
ユースケース.OpenCV は apt(libopencv-dev パッケージ)でインストールできる.apt でインストールできるのは Ubuntu のリリース時点のバージョンであり,opencv_contrib の全モジュールや NVIDIA CUDA 対応は含まれない.最新版を使いたい場合,opencv_contrib のモジュールを使いたい場合,NVIDIA CUDA 対応などビルドオプションを自分で指定したい場合は,ソースコードからビルドする.
【目次】
【関連する外部ページ】
- OpenCV の公式ページ: https://opencv.org
- GitHub の OpenCV のリリースページ: https://github.com/opencv/opencv/releases
- opencv_contrib のページ: https://github.com/opencv/opencv_contrib
- OpenCV 公式の Linux 向けビルド手順: https://docs.opencv.org/4.x/d7/d9f/tutorial_linux_install.html
- OpenCV のビルド構成オプション一覧: https://docs.opencv.org/4.x/db/d05/tutorial_config_reference.html
【サイト内の関連ページ】
- OpenCV について [PDF] , [パワーポイント]
- OpenCV のインストール,画像表示を行う C++ プログラムの実行手順: 別ページ »で説明
- OpenCV 4 の Python プログラム: 別ページ »にまとめ
- OpenCV 4 の C/C++ プログラム: 別ページ »にまとめている.
OpenCV
OpenCV は,実時間コンピュータビジョン (real time computer vision) の アルゴリズムと文書とサンプルコードの集まり.
- 2500 以上のアルゴリズムを収録.
- 顔検出,物体検出・認識,人間の動きの分類,カメラの動きの追跡,オブジェクトの動きの追跡,3次元モデルの抽出,ステレオカメラからの3次元点群の生成,イメージスティッチング,類似画像の検索,赤目の除去,眼球運動の追跡,AR の機能など
- ライセンス: Apache License 2.0(OpenCV 4.5.0 以降.それ以前は 3-clause BSD ライセンス)
- インタフェース: C++, Python, Java, JavaScript (OpenCV.js)
- 動作環境: Windows, Linux, macOS, iOS, Android
- opencv_contrib は,開発中のモジュールや,特許・ライセンスの都合で本体に含めないモジュール(aruco, ximgproc, xfeatures2d, cudaXXX など)をまとめた追加モジュール集で,本体のソースコードと同時にビルドする.
前準備
Ubuntu のシステム更新
Ubuntu で OS のシステム更新を行うときは, 端末で,次のコマンドを実行する.これは,パッケージ情報を最新の状態に保ち,インストール済みのパッケージをセキュリティアップデートやバグ修正を含めて更新するためである.
# パッケージリストの情報を更新
sudo apt update
# インストール済みのパッケージを包括的に更新 (依存関係も考慮)
sudo apt full-upgrade
# カーネル更新等で実際に再起動が必要な場合のみ実行を推奨
# sudo shutdown -r now
C/C++ コンパイラー,make,パッケージツールのインストール
端末で,次のコマンドを実行する.
# パッケージリストの情報を更新
sudo apt update
sudo apt -y install build-essential gcc g++ make libtool texinfo dpkg-dev pkg-config
Git, cmake, wget, unzip のインストール(Ubuntu 上)
端末で,次のコマンドを実行する.
# パッケージリストの情報を更新
sudo apt update
sudo apt -y install git cmake cmake-curses-gui cmake-gui wget unzip
CMake 最新版のインストール(Kitware の APT リポジトリを利用)
OpenCV の cmake 実行時には,追加ファイルのダウンロード(ippicv,face の学習済みデータなど)が行われる.Ubuntu 標準の CMake が古い場合にダウンロードや構成でエラーになることがあるため,CMake の開発元である Kitware が提供する APT リポジトリを追加して最新版を入れる.ソースコードからビルドするよりも短時間で,apt による更新も可能である.
端末で,次のコマンドを実行する.
# パッケージリストの情報を更新
sudo apt update
sudo apt -y install ca-certificates gpg wget
# Kitware の署名鍵を登録
wget -O - https://apt.kitware.com/keys/kitware-archive-latest.asc 2>/dev/null \
| gpg --dearmor - | sudo tee /usr/share/keyrings/kitware-archive-keyring.gpg >/dev/null
# 実行中の Ubuntu のコードネーム (noble, jammy など) を自動判定してリポジトリを追加
echo "deb [signed-by=/usr/share/keyrings/kitware-archive-keyring.gpg] https://apt.kitware.com/ubuntu/ $(lsb_release -cs) main" \
| sudo tee /etc/apt/sources.list.d/kitware.list >/dev/null
sudo apt update
sudo rm -f /usr/share/keyrings/kitware-archive-keyring.gpg
sudo apt -y install kitware-archive-keyring
sudo apt -y install cmake
# バージョンの確認
cmake --version
OpenCV のビルドに用いるライブラリのインストール(Ubuntu 上)
GUI 表示(imshow),画像ファイル入出力,動画ファイル・カメラ入出力,並列化のためのライブラリをインストールする.これらは cmake 実行時に検出され,見つからない機能はビルド対象から自動的に外れる.
端末で,次のコマンドを実行する.
# パッケージリストの情報を更新
sudo apt update
# GUI (highgui) 用
sudo apt -y install libgtk-3-dev
# 画像ファイル入出力用
sudo apt -y install libjpeg-dev libpng-dev libtiff-dev libwebp-dev libopenjp2-7-dev
# 動画ファイル・カメラ入出力用
sudo apt -y install libavcodec-dev libavformat-dev libswscale-dev libavutil-dev libv4l-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev
# 並列化・数値計算用
sudo apt -y install libtbb-dev libeigen3-dev libopenblas-dev liblapacke-dev
Python3 開発用ファイル,NumPy, pip, setuptools, venv のインストール(Ubuntu 上)
Python のインストールは行わない(Ubuntu のシステム Python を用いる.) Python 用モジュール cv2 をビルドするには,python3-dev(Python の C ヘッダ)と python3-numpy(NumPy のヘッダ)が必要である.どちらかが無い場合,cmake は Python バインディングをビルド対象から外す.
Ubuntu のシステム Python を用いるとき, python, pip は,次のコマンドで起動できる.
- python3 (Ubuntu のシステム Python)
- pip3 (pip 3)
Ubuntu 23.04 以降のシステム Python は externally-managed(PEP 668)であり,pip3 install はエラーになる.システムに追加する Python パッケージは apt(python3-パッケージ名)でインストールするか,python3 -m venv で仮想環境を作成してその中で pip を使う.
Ubuntu での Python 開発環境(JupyterLab, spyder, nteract)のインストール: 別ページ »で説明
Python3 開発用ファイル,NumPy, pip, setuptools, venv のインストール
端末で,次のコマンドを実行する.
# パッケージリストの情報を更新
sudo apt update
sudo apt -y install python-is-python3 python3-dev python-dev-is-python3 python3-numpy python3-pip python3-setuptools python3-venv build-essential
Intel Performance ライブラリのインストール
Intel Performance ライブラリ(oneMKL 等)を使いたいときは,インストールしておく(インストールしなくても OpenCV のビルドは行える).
Intel Performance ライブラリのインストールは,別ページ »で説明
Ubuntu での OpenCV, opencv_contrib のインストール
Ubuntu での OpenCV と opencv_contrib のインストールには,複数の方法がある.
- OpenCV 公式ページのインストール手順: https://docs.opencv.org/4.x/d7/d9f/tutorial_linux_install.html
- apt を利用: 別ページ »で説明
- ソースコードを利用: 別ページ »で説明
ここでは,OpenCV 公式ページのインストール手順に沿って,opencv_contrib を含めたビルドを行う.
ソースコードは,GitHub の 4.x ブランチのスナップショット(開発中の最新の 4 系)を取得する.特定のリリース版を使う場合は,URL の 4.x をタグ名(例: 4.13.0)に置き換え,以降のディレクトリ名も同様に読み替える.
ソースコードのダウンロードと展開
端末で,次のコマンドを実行する.
sudo apt update
sudo apt -y install cmake g++ wget unzip
sudo mkdir -p /usr/local/opencv
sudo chown -R $USER /usr/local/opencv
cd /usr/local/opencv
# OpenCV 本体と opencv_contrib のソースコードをダウンロード
wget -O opencv.zip https://github.com/opencv/opencv/archive/4.x.zip
wget -O opencv_contrib.zip https://github.com/opencv/opencv_contrib/archive/4.x.zip
# 以前の展開結果・ビルド結果があれば削除
rm -rf opencv-4.x opencv_contrib-4.x build
unzip -q opencv.zip
unzip -q opencv_contrib.zip
ビルドの構成 (cmake)
OPENCV_EXTRA_MODULES_PATH に opencv_contrib の modules ディレクトリを指定することで,opencv_contrib のモジュールが同時にビルドされる. BUILD_opencv_world=ON は,全モジュールを 1 つの共有ライブラリ (libopencv_world) にまとめる指定である. OPENCV_ENABLE_NONFREE=ON は,特許の対象であった SURF などのアルゴリズムを有効にする指定である(利用条件を確認して使用すること).
端末で,次のコマンドを実行する.
cd /usr/local/opencv
mkdir -p build
cd build
rm -f CMakeCache.txt
cmake -S /usr/local/opencv/opencv-4.x -B /usr/local/opencv/build \
-D CMAKE_BUILD_TYPE=Release \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D OPENCV_EXTRA_MODULES_PATH=/usr/local/opencv/opencv_contrib-4.x/modules \
-D OPENCV_GENERATE_PKGCONFIG=ON \
-D BUILD_opencv_world=ON \
-D OPENCV_ENABLE_NONFREE=ON \
-D BUILD_opencv_python3=ON \
-D PYTHON3_EXECUTABLE=/usr/bin/python3 \
-D WITH_GTK=ON \
-D WITH_TBB=ON \
-D BUILD_TESTS=OFF \
-D BUILD_PERF_TESTS=OFF \
-D BUILD_EXAMPLES=OFF \
-D INSTALL_C_EXAMPLES=OFF \
-D INSTALL_PYTHON_EXAMPLES=OFF
cmake の出力の末尾に構成の要約が表示される.Python 3 の項目に interpreter, numpy, install path が表示されていれば,Python 用モジュール cv2 がビルドされる.GUI の項目に GTK+ が表示されていれば,imshow による表示が行える.
-D WITH_CUDA=ON \
-D WITH_CUDNN=ON \
-D OPENCV_DNN_CUDA=ON \
-D CUDA_ARCH_BIN=8.6 \
-D ENABLE_FAST_MATH=ON
cd /usr/local/opencv/build
ccmake .
ビルドとインストール
ビルドには時間がかかる(環境により数十分から数時間).-j$(nproc) は,CPU のコア数と同数の並列コンパイルを行う指定である.
端末で,次のコマンドを実行する.
cd /usr/local/opencv/build
cmake --build . -j$(nproc)
sudo cmake --install .
sudo /sbin/ldconfig
インストールの確認
端末で,次のコマンドを実行する.バージョン番号が表示されれば,インストールは成功している.
pkg-config --modversion opencv4
python3 -c "import cv2; print(cv2.__version__)"
python3 -c "import cv2" で ModuleNotFoundError となる場合は,cv2 のインストール先が Python の検索パスに含まれていない.cmake の出力の要約にある「Python 3: install path」の値(例: /usr/local/lib/python3/dist-packages)を確認し,端末で,次のコマンドを実行する(恒久的に設定するときは,同じ行を ~/.bashrc に追加する).
export PYTHONPATH=/usr/local/lib/python3/dist-packages:$PYTHONPATH
また,pip でインストールした opencv-python が別に存在すると,そちらが優先されることがある.その場合は pip3 uninstall opencv-python opencv-contrib-python で削除する.
cd /usr/local/opencv/build
sudo xargs rm -f < install_manifest.txt
sudo /sbin/ldconfig