RaspberryPi4でOpenCVがやたら重かった。
調べてみると、公式のドキュメントは見つけられないが、個人のブログなどでちらほらNEONへの最適化などの話が見つかった。
下記の手順でビルドすれば、ラズパイに最適化されたOpenCVになる。
おそらくapt install
で入れたOpenCVはこれら(少なくともENABLE_NEON
)が最適化されたものだと思う。
これは自分でビルドしたいときの手順。
重要なのはcmake時の環境変数
- WITH_OPENMP
- WITH_TBB
- ENABLE_NEON
- ENABLE_FAST_MATH
- ENABLE_NEON
- ENABLE_VFPV3
OpenCVソース取得
ほしいバージョンのソース (zip) を次から取得
https://opencv.org/releases/
あるいは
wget https://github.com/opencv/opencv/archive/<バージョン>.zip
依存するライブラリ
sudo apt install -y build-essential cmake git unzip pkg-config
sudo apt install -y libjpeg-dev libtiff-dev libpng-dev
sudo apt install -y libavcodec-dev libavformat-dev libswscale-dev
sudo apt install -y libgtk2.0-dev libcanberra-gtk* libgtk-3-dev
sudo apt install -y libgstreamer1.0-dev gstreamer1.0-gtk3
sudo apt install -y libgstreamer-plugins-base1.0-dev gstreamer1.0-gl
sudo apt install -y libxvidcore-dev libx264-dev
sudo apt install -y python3-dev python3-numpy python3-pip
sudo apt install -y libv4l-dev v4l-utils
sudo apt install -y libopenblas-dev libatlas-base-dev libblas-dev
sudo apt install -y liblapack-dev gfortran libhdf5-dev
sudo apt install -y libprotobuf-dev libgoogle-glog-dev libgflags-dev
sudo apt install -y protobuf-compiler
sudo apt install -y libtbb2 libtbb-dev libdc1394-22-dev
ビルドとインストール
ここでは3.4.16
を~/
にダウンロードしてきたとします。
# cd ~/
# wget https://github.com/opencv/opencv/archive/3.4.16.zip
cd ~/
unzip 3.4.16.zip
rm 3.4.16.zip
cd opencv-3.4.16
mkdir build
cd build
pwd
# ~/opencv-3.4.16/build
# cmake webカメラ使うラズパイに最適化
cmake -DCMAKE_BUILD_TYPE=RELEASE \
-DCMAKE_INSTALL_PREFIX=/usr/local \
-DPYTHON3_PACKAGES_PATH=/usr/lib/python3/dist-packages \
-DENABLE_FAST_MATH=ON \
-DENABLE_NEON=ON \
-DENABLE_VFPV3=ON \
-DWITH_OPENMP=ON \
-DWITH_OPENCL=OFF \
-DWITH_TBB=ON \
-DBUILD_TBB=ON \
-DBUILD_TIFF=ON \
-DWITH_FFMPEG=ON \
-DWITH_V4L=ON \
-DWITH_LIBV4L=ON \
-DWITH_VTK=OFF \
-DWITH_QT=OFF \
-DOPENCV_ENABLE_NONFREE=ON \
-DINSTALL_C_EXAMPLES=OFF \
-DINSTALL_PYTHON_EXAMPLES=OFF \
-DOPENCV_GENERATE_PKGCONFIG=ON \
-DBUILD_EXAMPLES=OFF \
..
# make と install すごい2119
make -j4
sudo make install
make clean
# ldconfig
sudo ldconfig
sudo apt update