OpenCV, OpenCV Contrib のインストール,CUDA 対応可能(ソースコードを使用)(Ubuntu 上)
Ubuntu で,OpenCV 最新版をソースコードからビルドして,インストールする手順をスクリーンショット等で説明する.
ユースケース.OpenCVは「apt install opencv-dev」で簡単にインストールできるが,OpenCV の最新版を追いかけたい場合.自分の環境にあわせてビルドしたい(NVidia CUDA を使うなど)場合は,ソースコードからビルドする.
【目次】
【関連する外部ページ】
- OpenCV の公式ページ: https://opencv.org
- GitHub の OpenCV のページ: https://github.com/opencv/opencv/releases
【サイト内の関連ページ】
- OpenCV について [PDF] , [パワーポイント]
- OpenCV のインストール,画像表示を行う C++ プログラムの実行手順: 別ページ »で説明
- OpenCV 4 の Python プログラム: 別ページ »にまとめ
- OpenCV 4 の C/C++ プログラム: 別ページ »にまとめている.
OpenCV
OpenCV は,実時間コンピュータビジョン (real time computer vision) の アルゴリズムと文書とサンプルコードの集まり.
- 2500 以上のアルゴリズム.
- 顔認識、物体認識、人間の動きの分類、カメラの動きの追跡、オブジェクトの動きの追跡、3次元モデルの抽出、ステレオカメラからの3次元点群の生成、イメージスティッチング、類似画像の検索、赤目の除去、眼球運動の追跡、ARの機能など
- ライセンス: BSD ライセンス
- インタフェース: C++, Python, Java, MATLAB
- マシン: Windows, Linux, Mac OS, iOS, Android
前準備
Ubuntu のシステム更新
Ubuntu で OS のシステム更新を行うときは, 端末で,次のコマンドを実行する.
sudo apt -y update
sudo apt -yV upgrade
sudo /sbin/shutdown -r now
C/C++ コンパイラー,make,パッケージツール,qt5-qmake のインストール
端末で,次のコマンドを実行する.
sudo apt -y install build-essential gcc g++ make libtool texinfo dpkg-dev pkg-config
sudo apt -y install qt5-qmake
NVIDIA ドライバ,NVIDIA CUDA ツールキット 11.7, NVIDIA cuDNN v8.4.1 のインストールのインストール(Ubuntu 上)
Ubuntu での NVIDIA ドライバ,NVIDIA CUDA ツールキット 11.7, NVIDIA cuDNN v8.4.1 のインストール: 別ページ »で説明
Git, cmake, curl のインストール(Ubuntu 上)
インストールするには,端末で,次のコマンドを実行する.
sudo apt -y install git cmake cmake-curses-gui cmake-gui curl
Python3 開発用ファイル,pip, setuptools, venv のインストール(Ubuntu 上)
Python のインストールは行わない(Ubuntu のシステム Python を用いる.)
Python, pip のコマンドでの起動のまとめ.
Ubuntu のシステム Python を用いるとき, python, pip は,次のコマンドで起動できる.
- python3 (Ubuntu のシステム Python)
- sudo pip3 (pip 3)
Ubuntu での Python 開発環境(JupyterLab, spyder, nteract)のインストール: 別ページ »で説明
Python3 開発用ファイル,pip, setuptools, venv のインストール
端末で,次のコマンドを実行する.
sudo apt -y update
sudo apt -y install python-is-python3 python3-dev python-dev-is-python3 python3-pip python3-setuptools python3-venv build-essential
Ceres Solver のインストール(Ubuntu 上)
端末で,次のコマンドを実行する.
sudo apt -y install libceres-dev libceres2
Intel Performance ライブラリのインストール
Intel Performance ライブラリを使いたいときは,インストールしておく (必ずしもインストールする必要はない)
Inter Performance ライブラリのインストールは,別ページ »で説明
Ubuntu で OpenCV のビルドとインストール
- 前提ソフトウェア類
端末で,次のコマンドを実行する.
sudo apt -y build-dep libopencv-dev sudo apt -y install libgtk2.0-dev sudo apt -y install openalpr openalpr-utils libopenalpr-dev sudo apt -y install openni2-utils libopenni2-dev sudo apt -y install libpcl-dev sudo apt -y install libguava-java sudo apt -y install python3-dev pylint3 flake8 python3-flake8 sudo apt -y install libjasper-dev libleveldb-dev liblmdb-dev sudo apt -y install libatlas-base-dev libopenblas-dev liblapack-dev libtbb-dev libeigen3-dev
- OpenCV のバージョンの確認
次のページなどで,最新バージョンのバージョン番号を確認できる.
- ソースコードのダウンロードと cmake の実行
端末で,次のコマンドを実行する. 「-b 4.6.0」でバージョン指定している. 「/usr/local/cuda-11.7」のところは,NVIDIA CUDA ツールキット をインストールしたディレクトリに読み替えること.
NVIDIA ドライバ (https://www.nvidia.com/download/index.aspx), NVIDIA CUDA ツールキット 11.7,NVIDIA cuDNN v8.2 のインストール: 別ページ »で説明
Intel MKL を使いたいときは「-DUSE_MKL=ON」に設定する.このとき, 「/opt/intel/compilers_and_libraries_2020.0.166/linux/mkl/include」のところは,Intel MKL の mkl.h があるディレクトリに読み替えること.Intel MKL のインストールのインストールは,別ページ »で説明
cd /usr/local sudo rm -rf opencv sudo git clone --recursive -b 4.6.0 https://github.com/opencv/opencv.git sudo chown -R ${USER} /usr/local/opencv cd /usr/local sudo rm -rf opencv_contrib sudo git clone --recursive -b 4.6.0 https://github.com/opencv/opencv_contrib.git sudo chown -R ${USER} /usr/local/opencv_contrib cd /usr/local/opencv sudo rm -rf build sudo mkdir build sudo chown -R ${USER} /usr/local/opencv/build cd build CUDA_PATH="/usr/local/cuda-11.7" CFLAGS="-I/usr/local/cuda-11.7/include -I/opt/intel/compilers_and_libraries/linux/mkl/include" LDFLAGS="-L/usr/local/cuda-11.7/lib64" \ cmake .. -D CMAKE_BUILD_TYPE=RELEASE \ -D BUILD_opencv_world=ON \ -D BUILD_opencv_apps=ON \ -D OPENCV_EXTRA_MODULES_PATH=/usr/local/opencv_contrib/modules \ -D OpenBLAS_INCLUDE_DIR=/usr/include/x86_64-linux-gnu \ -D OpenBLAS_LIB=/usr/lib/x86_64-linux-gnu/openblas-pthread/libopenblas.so \ -D WITH_PYTHON=ON \ -D BUILD_opencv_python2=OFF \ -D BUILD_opencv_python3=ON \ -D PYTHON_DEFAULT_EXECUTABLE=python3 \ -D WITH_MKL=ON \ -D WITH_CUDA=ON \ -D CUDA_FAST_MATH=ON \ -D WITH_CUBLAS=ON \ -D WITH_CUDNN=ON \ -D WITH_NVCUVID=OFF \ -D OPENCV_DNN_CUDA=OFF \ -D BUILD_opencv_cudaimgproc=OFF \ -D BUILD_EXAMPLES=ON \ -D CMAKE_INSTALL_PREFIX=/usr/local \ -D INSTALL_TESTS=ON \ -D INSTALL_C_EXAMPLES=ON \ -D INSTALL_BIN_EXAMPLES=ON \ -D INSTALL_PYTHON_EXAMPLES=ON
補足説明
- cmake の実行で「CMake Generate step failed. Build files cannot be regenerated correctly」と表示される場合がある. この場合にはgit の実行(2箇所ある)で「-b 4.6.0」のようにバージョン指定する(最新版を追いかけない)と解決する場合がある.
- MKL (Intel Math Kernel Library) を使わないときは「-D WITH_MKL=OFF」
- NVIDIA CUDA を使わないときは,次の設定を外す
-D WITH_CUDA=ON \ -D CUDA_FAST_MATH=ON \ -D WITH_CUBLAS=ON \ -D WITH_CUDNN=ON \ -D WITH_NVCUVID=OFF \ -D OPENCV_DNN_CUDA=ON \ -D CUDA_ARCH_PTX=7.5 \ -D BUILD_opencv_cudaimgproc=OFF \
- cmake のオプションについては「ccmake ..」で確認できる
- 古いバージョンである OpenCV 3.4.1 を ubuntu 18.04 でビルドするとき
「unsupported GNU version! gcc version later than 6 are not supported!」というエラーが出る場合がある.
このエラーを回避するために,次のコマンドを実行する
CC=gcc-6 CXX=g++-6 cmake -D CMAKE_BUILD_TYPE=RELEASE \ -D CMAKE_INSTALL_PREFIX=/usr/local \ -D INSTALL_PYTHON_EXAMPLES=ON \ -D OPENCV_EXTRA_MODULES_PATH=/tmp/opencv_contrib/modules \ -D BUILD_opencv_python3=ON \ -D PYTHON_DEFAULT_EXECUTABLE=python3 \ -D BUILD_EXAMPLES=ON ..
- cmake の結果の確認
エラーメッセージが出ていないこと
- ビルド
端末で,次のコマンドを実行する.
cd /usr/local/opencv/build CUDA_PATH="/usr/local/cuda-11.7" CFLAGS="-I/usr/local/cuda-11.7/include" LDFLAGS="-L/usr/local/cuda-11.7/lib64" \ make -j4
- ビルドの結果の確認
エラーメッセージが出ていないことを確認
- インストール
端末で,次のコマンドを実行する.
sudo make install sudo /sbin/ldconfig
- インストールの結果の確認
エラーメッセージが出ていないことを確認
- バージョン確認
バージョン番号が表示されれば OK.下の図とは違うバージョンが表示されることがある.
python3 -c "import cv2; print( cv2.__version__ )"
OpenCV を用いた画像表示の例
OpenCV で画像表示を行う C++ プログラム
ファイル名 a.cpp で保存.
#include<opencv2/opencv.hpp>
int main (int argc, char *argv[])
{
cv::Mat bgr = cv::imread("/usr/local/share/opencv4/samples/data/fruits.jpg");
cv::imshow("", bgr);
cv::waitKey(0);
cv::destroyAllWindows();
return 0;
}
次のようなコマンドで実行
g++ -I/usr/local/include/opencv4 -o a.out a.cpp -L/usr/local/lib -lopencv_world
./a.out
ソースコードからビルドするときに「-D BUILD_opencv_world=ON」を付けなかったときは, 次のようなコマンドで実行
g++ -I/usr/local/include/opencv4 -o a.out a.cpp -L/usr/local/lib -lopencv_core -lopencv_highgui -lopencv_imgcodecs
./a.out
画像表示が行われる.画面をクリックし,なにかのキーを押して閉じる.

OpenCV で画像表示を行う Python プログラム
Python プログラムの実行
- Windows では python (Python ランチャーは py)
- Ubuntu では python3
Python 開発環境(Jupyter Qt Console, Jupyter ノートブック (Jupyter Notebook), Jupyter Lab, Nteract, Spyder, PyCharm, PyScripterなど)も便利である.
Python のまとめ: 別ページ »にまとめ
python
import cv2
CVSAMPLEDAT="/usr/local/share/opencv4/samples/data/"
bgr = cv2.imread(CVSAMPLEDAT + "fruits.jpg")
cv2.imshow("", bgr)
cv2.waitKey(0)
cv2.destroyAllWindows()
画像が表示されるので確認. このあと,ウインドウの右上の「x」をクリックしない.画面の中をクリックしてから,何かのキーを押して閉じる
