OpenCV 4.10 + CUDA 12.3 + Python3.10 + Extra Modules Ubuntu 22.04 セットアップガイド
毎回面倒な設定なので、まとめてみました。
✅ 事前条件(本件未チェックの部分があります)
- Ubuntu 22.04 LTS
- CUDA 12.3(
nvcc --version
で確認) - Python 3.10
- cmake-gui(GUIで設定)
1. 必要パッケージのインストール
sudo apt update
sudo apt install -y build-essential cmake cmake-gui git pkg-config \
libgtk-3-dev libavcodec-dev libavformat-dev libswscale-dev \
libv4l-dev libxvidcore-dev libx264-dev libjpeg-dev libpng-dev \
libtiff-dev gfortran openexr libatlas-base-dev python3-dev python3-numpy \
libtbb2 libtbb-dev libdc1394-22-dev libopenexr-dev libgstreamer1.0-dev \
libgstreamer-plugins-base1.0-dev libprotobuf-dev protobuf-compiler \
libgoogle-glog-dev libgflags-dev libgphoto2-dev libeigen3-dev libhdf5-dev \
doxygen qtbase5-dev
2. OpenCV + Contrib モジュールのダウンロード
cd ~
git clone https://github.com/opencv/opencv.git
cd opencv
git checkout 4.10.0
cd ~
git clone https://github.com/opencv/opencv_contrib.git
cd opencv_contrib
git checkout 4.10.0
3. ビルド用ディレクトリ作成
cd ~/opencv
mkdir build
cd build
4. cmake-gui 設定
cmake-gui
- Where is the source code:
/home/ユーザー名/opencv
- Where to build the binaries:
/home/ユーザー名/opencv/build
「Configure」後にチェックすべき項目
- WITH_CUDA = ON
- OPENCV_EXTRA_MODULES_PATH =
/home/ユーザー名/opencv_contrib/modules
- ENABLE_FAST_MATH = ON / CUDA_FAST_MATH = ON
- WITH_QT = ON
- WITH_OPENGL = ON
- BUILD_opencv_python3 = ON
- Python3_EXECUTABLE, LIBRARY, INCLUDE_DIR が 3.10 に向いているか確認
- BUILD_PACKAGE = ON(
opencv4.pc
など pkg-config に対応)
5. make & install
make -j$(nproc)
sudo make install
sudo ldconfig
6. Pythonから確認
python3 -c "import cv2; print(cv2.getBuildInformation())"
CUDA: YES
、Extra modules:
に目的のモジュールがあれば成功。
7. トラブル対処
- CUDA not found: CUDA_PATH の誤り、環境変数
LD_LIBRARY_PATH
を確認 - Pythonバージョン違い:
Python3_EXECUTABLE
に 3.10 を明示 - pkg-configでopencv4.pcが見つからない:
BUILD_PACKAGE=ON
を有効にして再ビルド
8. シェルスクリプト化のヒント
cmake-gui は対話形式のためスクリプトにできませんが、代わりに以下のように CMake コマンドラインで実現可能:
#!/bin/bash
set -e
OPENCV_VERSION="4.10.0"
CUDA_PATH="/usr/local/cuda-12.3"
PYTHON_EXEC=$(which python3.10)
PYTHON_INCLUDE=$(python3.10 -c "from sysconfig import get_paths; print(get_paths()['include'])")
PYTHON_LIB=$(python3.10 -c "import sysconfig; print(sysconfig.get_config_var('LIBDIR'))")
cd ~
git clone https://github.com/opencv/opencv.git
git clone https://github.com/opencv/opencv_contrib.git
cd opencv
git checkout $OPENCV_VERSION
cd ../opencv_contrib
git checkout $OPENCV_VERSION
mkdir -p ~/opencv/build
cd ~/opencv/build
cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D WITH_CUDA=ON \
-D ENABLE_FAST_MATH=ON \
-D CUDA_FAST_MATH=ON \
-D WITH_CUBLAS=ON \
-D WITH_QT=ON \
-D WITH_OPENGL=ON \
-D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib/modules \
-D BUILD_opencv_python3=ON \
-D BUILD_PACKAGE=ON \
-D PYTHON3_EXECUTABLE=$PYTHON_EXEC \
-D PYTHON3_INCLUDE_DIR=$PYTHON_INCLUDE \
-D PYTHON3_LIBRARY=$PYTHON_LIB/libpython3.10.so \
-D BUILD_EXAMPLES=OFF ..
make -j$(nproc)
sudo make install
sudo ldconfig
これを install_opencv.sh
として保存し、実行権限を付与してから実行:
chmod +x install_opencv.sh
./install_opencv.sh