OpenCV原始碼編譯參數

因應 OpenCV 新版 4.9.0,目前將各平臺編譯參數均移除 -D WITH_INF_ENGINE=ON,以免 cmake 階段產生錯誤。需要自行編譯 OpenCV 的網友,請自行複製貼上指令,並修改紅色部分的路徑與版本編號。

★樹莓派 3B+、4B

編譯前需要安裝的Library

$ sudo apt-get install build-essential cmake cmake-qt-gui libjpeg-dev libpng-dev libtiff5-dev libavcodec-dev libavformat-dev libswscale-dev libv4l-dev libxvidcore-dev libx264-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev libgtk2.0-dev libgtk-3-dev libcanberra-gtk* libatlas-base-dev gfortran python3-dev

cmake 參數

$ cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D OPENCV_EXTRA_MODULES_PATH=~/opencv/opencv_contrib-版本編號/modules \
-D ENABLE_NEON=ON \
-D ENABLE_VFPV3=ON \
-D WITH_TBB=ON \
-D WITH_OPENMP=ON \
-D WITH_GSTREAMER=ON \
-D BUILD_TESTS=OFF \
-D OPENCV_ENABLE_NONFREE=ON \
-D INSTALL_PYTHON_EXAMPLES=OFF \
-D BUILD_EXAMPLES=OFF \
-D OPENCV_EXTRA_EXE_LINKER_FLAGS=-latomic \
-D PYTHON_EXECUTABLE3=/usr/bin/python3 \
..

★Ubuntu X86 CPU(需要再測試,不保證 )

編譯前需要安裝的Library

$ sudo apt-get install build-essential cmake cmake-qt-gui libjpeg-dev libpng-dev libtiff5-dev libavcodec-dev libavformat-dev libswscale-dev libv4l-dev libxvidcore-dev libx264-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev libgtk2.0-dev libgtk-3-dev libcanberra-gtk* libatlas-base-dev gfortran python3-dev

cmake 參數

若有問題,建議拿掉 WITH_TBB=ON 與 WITH_OPENMP=ON 這兩個參數

$ cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D OPENCV_EXTRA_MODULES_PATH=~/opencv/opencv_contrib-版本編號/modules \
-D WITH_TBB=ON \
-D WITH_OPENMP=ON \
-D WITH_GSTREAMER=ON \
-D BUILD_TESTS=OFF \
-D OPENCV_ENABLE_NONFREE=ON \
-D INSTALL_PYTHON_EXAMPLES=OFF \
-D BUILD_EXAMPLES=OFF \
-D OPENCV_EXTRA_EXE_LINKER_FLAGS=-latomic \
-D PYTHON_EXECUTABLE=/usr/bin/python3 \
..

★Jetson Nano / NX 

先移除內建的 OpenCV

$ sudo sudo apt-get purge *libopencv*

編譯前需要安裝的Library

$ sudo apt-get install build-essential cmake cmake-qt-gui libjpeg-dev libpng-dev libtiff5-dev libavcodec-dev libavformat-dev libswscale-dev libv4l-dev libxvidcore-dev libx264-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev libgtk2.0-dev libgtk-3-dev libcanberra-gtk* libatlas-base-dev gfortran python3-dev

cmake 參數

$ cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D OPENCV_EXTRA_MODULES_PATH=~/opencv/opencv_contrib-版本編號/modules \
-D OPENCV_DNN_CUDA=ON \
-D ENABLE_FAST_MATH=1 \
-D ENABLE_NEON=ON \
-D CUDA_FAST_MATH=1 \
-D CUDA_ARCH_BIN="5.3,6.2,7.2" \
-D CUDA_ARCH_PTX="" \
-D WITH_CUDA=ON \
-D WITH_CUDNN=ON \
-D WITH_TBB=ON \
-D WITH_OPENMP=ON \
-D WITH_GSTREAMER=ON \
-D WITH_FFMPEG=ON \
-D BUILD_TESTS=OFF \
-D OPENCV_ENABLE_NONFREE=ON \
-D INSTALL_PYTHON_EXAMPLES=OFF \
-D BUILD_EXAMPLES=OFF \
-D OPENCV_EXTRA_EXE_LINKER_FLAGS=-latomic \
-D PYTHON3_EXECUTABLE=/usr/bin/python3 \
-D PYTHON3_INCLUDE_DIR=$(python3 -c "from distutils.sysconfig import get_python_inc; print(get_python_inc())") \
-D PYTHON3_PACKAGES_PATH=$(python3 -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())") \
-D OPENCV_GENERATE_PKGCONFIG=YES \
..

安裝 PyTorch

若要安裝支援 CUDA 的 PyTorch 就不能從 PyTorch 官網下載,必須安裝 Nvidia 打包好的。若以 Xavier NX 為例,若安裝的作業系統是 NX Developer Kit 5.0.2 版本,可安裝的最高 PyTorch 版本為  torch-2.1.0a0+41361538.nv23.06-cp38-cp38-linux_aarch64.whl,可在 Jetson Download Center 找到,下載後執行下列指令安裝。

pip3 install torch-2.1.0a0+41361538.nv23.06-cp38-cp38-linux_aarch64.whl

安裝完後再下載 torchvision 原始碼,版本必須是 0.16.2,不能隨便亂裝其餘版本,並且需要自行編譯原始碼,無法使用 pip install 安裝已編譯好的版本(可安裝,但執行會報錯)。原始碼可在此下載 https://github.com/pytorch/vision/tree/v0.16.2。下載回來後解開,安裝過程需要編譯,因此需要一些時間,指令如下。

unzip v0.16.2.zip
cd vision-0.16.2
python3 setup.py install

若過程中需要其他函數庫,見招拆招去補即可。全部安裝完可執行下列 python 指令看看是否支援 CUDE,若看到 True 就表示支援。

import torch
torch.cuda.is_available()

★macOS

編譯需要安裝的程式

$ brew install python@版本
$ brew install cmake
$ brew install opencv
$ pip3 install numpy

cmake 參數

$ cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D OPENCV_EXTRA_MODULES_PATH=~/opencv/opencv_contrib-版本編號/modules \
-D OPENCV_ENABLE_NONFREE=ON \
-D PYTHON3_EXECUTABLE=/usr/local/bin/python3 \
-D PYTHON_EXECUTABLE=/usr/bin/python \
-D BUILD_opencv_python3=ON \
..

★Windows

抱歉,我從來沒在 Windows 中編譯過,願請好心人提供編譯參數。

發表迴響