Ubuntu で,OpenCV 最新版をソースコードからビルドして,インストールする手順をスクリーンショット等で説明する.
ユースケース.OpenCVは「apt install opencv-dev」で簡単にインストールできるが,OpenCV の最新版を追いかけたい場合.自分の環境にあわせてビルドしたい(NVidia CUDA を使うなど)場合は,ソースコードからビルドする.
【目次】
OpenCV は,実時間コンピュータビジョン (real time computer vision) の アルゴリズムと文書とサンプルコードの集まり.
【サイト内の OpenCV 関連ページ】
【OpenCV の公式情報】
Ubuntu で OS のシステム更新を行うときは, 端末で,次のコマンドを実行.
Ubuntu のインストールは別ページで説明している
sudo apt -y update sudo apt -yV upgrade sudo /sbin/shutdown -r now
インストールするには, 端末で,次のコマンドを実行.
sudo apt -y update sudo apt -y install python-is-python3 python3-dev python3-pip python3-setuptools python3-venv
Ubuntu で,Python 開発環境,Python コンソール(Jupyter Qt Console, Jupyter ノートブック (Jupyter Notebook), Jupyter Lab, Nteract, spyder)のインストールを行う.
jupyter qtconsole, nteract, JupyterLab, spyder は,次のコマンドで起動できる.
sudo apt -y update sudo apt -y install python-is-python3 python3-dev python3-pip python3-setuptools python3-venv sudo pip3 uninstall ptyprocess sniffio terminado tornado jupyterlab jupyter jupyter-console jupytext nteract_on_jupyter spyder sudo apt -y install jupyter jupyter-qtconsole spyder3 sudo apt -y install python3-ptyprocess python3-sniffio python3-terminado python3-tornado sudo pip3 install -U jupyterlab nteract_on_jupyter
端末で,次のコマンドを実行.
sudo apt -y update sudo apt -y install git wget p7zip-full
手間は少しかかるが,後ほど OpenCV で cmake するときのエラー(ファイルをダウンロードできないエラー)を回避するために, cmake 最新版をインストールする.
端末で,次のコマンドを実行.
sudo apt -y update sudo apt -y install build-essential # cmake には curl, zlib が必要 sudo apt -y install zlib1g-dev libcurl4-gnutls-dev cd /tmp git clone https://github.com/Kitware/CMake.git cd CMake ./configure --system-curl --system-zlib make sudo make install
端末で,次のコマンドを実行.
sudo apt -y update sudo apt -y install build-essential gcc g++ make libtool texinfo dpkg-dev pkg-config sudo apt -y install qt5-qmake
Intel Performance ライブラリを使いたいときは,インストールしておく (必ずしもインストールする必要はない)
Inter Performance ライブラリのインストールは,別ページで説明している.
CUDA 対応の GPU であるかを確認のため, 端末で,次のコマンドを実行.
(表示が空になるときは,NVIDIAのグラフィックス・カードが無い可能性がある).
lspci | grep -i nvidia | grep VGA
端末で,次のコマンドを実行.
echo 'blacklist nouveau' | sudo tee -a /etc/modprobe.d/blacklist-nouveau.conf echo 'options nouveau modeset=0' | sudo tee -a /etc/modprobe.d/blacklist-nouveau.conf cat /etc/modprobe.d/blacklist-nouveau.conf sudo update-initramfs -u
NVIDIA グラフィックスドライバのインストール,NVIDIA CUDA ツールキットがインストールされていた場合には,アンイントールする. 端末で,次のコマンドを実行.
dpkg -l | grep cuda sudo apt --purge remove nvidia-* sudo apt --purge remove cuda-* sudo apt autoremove
端末で,次のコマンドを実行.
sudo apt -y update sudo apt -y install linux-headers-$(uname -r)
Ubuntu 20.04 で実際に試したところ「sudo ubuntu-drivers autoinstall」を用いて NVIDIA グラフィックスドライバをインストールするのが最も安定しているようである.
端末で,次のコマンドを実行.
sudo apt -y update sudo apt upgrade sudo apt dist-upgrade ubuntu-drivers devices sudo ubuntu-drivers autoinstall sudo update-initramfs -u
グラフィックスドライバが入れ変わったので,Ubuntu システムを再起動する.
端末で,次のコマンドを実行.
sudo /sbin/shutdown -r now
システムの再起動後,端末で,次のコマンドを実行し,ドライバ等を確認する
先頭の「Driver Version」のところに,ドライバのバージョンが表示される.
nvidia-smi
CUDA は,NVIDIA社が提供している GPU 用のプラットフォームである.
NVIDIA CUDA ツールキットの URL: https://developer.nvidia.com/cuda-toolkit-archive
指定されているバージョンより高いものは使わない. その根拠は次のページ. URL: https://www.tensorflow.org/install/source#common_installation_problems
Ubuntu での NVIDIA CUDA ツールキットのインストール: 別ページで説明している.
NVIDIA グラフィックス・カードがある場合に限り, インストールを行うこと.
NVIDIA 機械学習パッケージレポジトリからダウンロードして,インストールするという手順を説明する.
NVIDIA 機械学習パッケージレポジトリの URL: https://developer.download.nvidia.com/compute/machine-learning/repos/
NVIDIA 機械学習パッケージレポジトリの URL: https://developer.download.nvidia.com/compute/machine-learning/repos/
Ubuntu 20.04 の場合は,https://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu2004/x86_64/ で確認.
スクロールして「nvidia-machine-learning-repo ・・・」を探す
端末で,次のように操作する. このとき,確認したファイル名を指定すること.
cd /tmp wget https://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu2004/x86_64/nvidia-machine-learning-repo-ubuntu2004_1.0.0-1_amd64.deb sudo dpkg -i nvidia-machine-learning-repo-ubuntu2004_1.0.0-1_amd64.deb sudo apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu1804/x86_64/7fa2af80.pub sudo apt -y update
apt-cache search cudnn
sudo apt -y update sudo apt -y install libcudnn8 libcudnn8-dev
dpkg -l | grep cuda
NVIDIA 機械学習パッケージレポジトリの URL: https://developer.download.nvidia.com/compute/machine-learning/repos/
Ubuntu 18.04 の場合は,https://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu1804/x86_64/ で確認.
スクロールして「nvidia-machine-learning-repo ・・・」を探す
端末で,次のように操作する. このとき,確認したファイル名を指定すること.
cd /tmp wget https://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu1804/x86_64/nvidia-machine-learning-repo-ubuntu1804_1.0.0-1_amd64.deb sudo dpkg -i nvidia-machine-learning-repo-ubuntu1804_1.0.0-1_amd64.deb sudo apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu1804/x86_64/7fa2af80.pub sudo apt -y update
apt-cache search cudnn
sudo apt -y update sudo apt -y install libcudnn7 libcudnn7-dev
dpkg -l | grep cuda
端末で,次のコマンドを実行.
sudo apt -y build-dep libopencv-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
端末で,次のコマンドを実行. 「/usr/local/cuda-11.4」のところは,NVIDIA CUDA ツールキット をインストールしたディレクトリに読み替えること.
NVIDIA グラフィックスドライバ (https://www.nvidia.com/download/index.aspx), NVIDIA CUDA ツールキット 11.4,NVIDIA cuDNN 8.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 https://github.com/opencv/opencv.git sudo chown -R ${USER} /usr/local/opencv cd /usr/local sudo rm -rf opencv_contrib sudo git clone 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.4" CFLAGS="-I/usr/local/cuda-11.4/include -I/opt/intel/compilers_and_libraries/linux/mkl/include" LDFLAGS="-L/usr/local/cuda-11.4/lib64" \ cmake -D CMAKE_BUILD_TYPE=RELEASE \ -D CMAKE_INSTALL_PREFIX=/usr/local \ -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/libopenblas.so \ -D INSTALL_TESTS=ON \ -D INSTALL_C_EXAMPLES=ON \ -D WITH_PYTHON=ON \ -D INSTALL_PYTHON_EXAMPLES=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 CUDA_ARCH_PTX=7.5 \
補足説明
-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 \
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 ..
エラーメッセージが出ていないこと
端末で,次のコマンドを実行.
cd /usr/local/opencv/build CUDA_PATH="/usr/local/cuda-11.4" CFLAGS="-I/usr/local/cuda-11.4/include" LDFLAGS="-L/usr/local/cuda-11.4/lib64" \ make -j4
エラーメッセージが出ていないことを確認
端末で,次のコマンドを実行.
sudo make install sudo /sbin/ldconfig
エラーメッセージが出ていないことを確認
バージョン番号が表示されれば OK.下の図とは違うバージョンが表示されることがある.
python3 -c "import cv2; print( cv2.__version__ )"
Python プログラムを動かす.
Python プログラムを動かすために, Windows では「python」, Ubuntu では「python3」などのコマンドを使う.
あるいは, 開発環境や Python コンソール(Jupyter Qt Console,Spyder,PyCharm,PyScripter など)の利用も便利である.
あるいは,オンラインで動くGoogle Colaboratory のノートブックの利用も,場合によっては便利である.
import cv2 CVSAMPLEDAT="/usr/local/share/opencv4/samples/data/" bgr = cv2.imread(CVSAMPLEDAT + "fruits.jpg") cv2.imshow("", bgr) cv2.waitKey(0) cv2.destroyAllWindows()
画像が表示されるので確認. このあと,ウインドウの右上の「x」をクリックしない.画面の中をクリックしてから,何かのキーを押して閉じる