OpenCV, opencv_contrib のインストール(Ubuntu 上)

Ubuntu で,OpenCV と opencv_contrib(追加モジュール集)をソースコードからビルドしてインストールする手順を説明する.

ユースケース.OpenCV は apt(libopencv-dev パッケージ)でインストールできる.apt でインストールできるのは Ubuntu のリリース時点のバージョンであり,opencv_contrib の全モジュールや NVIDIA CUDA 対応は含まれない.最新版を使いたい場合,opencv_contrib のモジュールを使いたい場合,NVIDIA CUDA 対応などビルドオプションを自分で指定したい場合は,ソースコードからビルドする.

目次

  1. 前準備
  2. Ubuntu での OpenCV, opencv_contrib のビルドとインストール

【関連する外部ページ】

【サイト内の関連ページ】

OpenCV

OpenCV は,実時間コンピュータビジョン (real time computer vision) の アルゴリズムと文書とサンプルコードの集まり.

前準備

Ubuntu のシステム更新

Ubuntu で OS のシステム更新を行うときは, 端末で,次のコマンドを実行する.これは,パッケージ情報を最新の状態に保ち,インストール済みのパッケージをセキュリティアップデートやバグ修正を含めて更新するためである.

Ubuntu のインストールはこちらの別ページで説明する.

# パッケージリストの情報を更新
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
Kitware の APT リポジトリが対応していない Ubuntu のバージョンを使用している場合は,Ubuntu 標準の cmake パッケージ(前項でインストール済み)をそのまま用いる.

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 バインディングをビルド対象から外す.

Python, pip のコマンドでの起動のまとめ.

Ubuntu のシステム Python を用いるとき, python, pip は,次のコマンドで起動できる.

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 公式ページのインストール手順に沿って,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 による表示が行える.

NVIDIA CUDA を使う場合: NVIDIA ドライバと CUDA ツールキット,cuDNN を先にインストールしたうえで,上の cmake のオプションに次を追加する.CUDA 対応のモジュール (cudev, cudaarithm など) は opencv_contrib に含まれるため,OPENCV_EXTRA_MODULES_PATH の指定が必須である.CUDA_ARCH_BIN には,使用する GPU の Compute Capability を指定する.
  -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 で削除する.

ソースコードからのインストールは,ファイルを所定の場所にコピーするだけであり,apt のパッケージ管理には登録されない.アンインストールするときは,端末で,次のコマンドを実行する.
cd /usr/local/opencv/build
sudo xargs rm -f < install_manifest.txt
sudo /sbin/ldconfig