Raspberry pi にOpenCV 4.5.3のビルドで100%になったけど進まなくなったときの対処

2021-09-14

はじめに

みなさん、OpenCVをRaspberry piに入れたことはありますか? すんなり行けば良いんですが、結構ハマるポイントが潜んでいます。

今回はそのハマったポイントを少しだけ共有します。

エラー対応

98%とかで動かなくなってしまったときはマジかお前ってなりますよね。 CPUを多くしてビルドを行うとメモリが足りないとかそんなエラーも出ます。

寝る前にビルドを始めるという前提であれば、以下のようなオプションでmakeするのは解決策の一つです。

-j 以降をすべて削除します。

- $(MAKE) -j $(shell nproc --all)
+ $(MAKE)

ビルドが100%に到達しているのに終了しないとき

ビルドが100%になっているのに、何時間待ってもインストール作業が始まらないため 強制終了した時のログを記載します。

[100%] Building CXX object apps/interactive-calibration/CMakeFiles/opencv_interactive-calibration.dir/main.cpp.o
[100%] Building CXX object apps/interactive-calibration/CMakeFiles/opencv_interactive-calibration.dir/parametersController.cpp.o
[100%] Building CXX object apps/interactive-calibration/CMakeFiles/opencv_interactive-calibration.dir/rotationConverters.cpp.o
[100%] Linking CXX executable ../../bin/opencv_interactive-calibration
make[3]: Leaving directory '/tmp/opencv/opencv-4.5.3/build'
[100%] Built target opencv_interactive-calibration
^C^C
make[3]: *** [modules/python3/CMakeFiles/opencv_python3.dir/build.make:63: modules/python3/CMakeFiles/opencv_python3.dir/__/src2/cv2.cpp.o] Interrupt
make[2]: *** [CMakeFiles/Makefile2:6051: modules/python3/CMakeFiles/opencv_python3.dir/all] Interrupt
make[1]: *** [Makefile:163: all] Interrupt
make: *** [Makefile:102: build_raspi] Interrupt

キャンセルしたときに処理中の内容が表示されます。 今回は、python3が悪さしているっぽいです。

Makefileの中身でpython3で指定しているパスが違うとかそんなところかと思いますが…

build対象からpythonを外しておいて、代わりにpipからインストールする方法を取ります。

Makefileにあるビルド設定はこんな感じに書き直します。

cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D BUILD_SHARED_LIBS=ON -D OPENCV_EXTRA_MODULES_PATH=/tmp/opencv/opencv_contrib-4.5.3/modules -D BUILD_DOCS=OFF -D BUILD_EXAMPLES=OFF -D BUILD_TESTS=OFF -D BUILD_PERF_TESTS=OFF -D BUILD_opencv_java=OFF -D BUILD_opencv_python=NO -D BUILD_opencv_python2=NO -D BUILD_opencv_python3=NO -D ENABLE_NEON=ON -D ENABLE_VFPV3=ON -D WITH_JASPER=OFF -D OPENCV_GENERATE_PKGCONFIG=ON -D WITH_GTK=ON -D WITH_GSTREAMER=ON  ..

pipでダウンロードしましょう。

python -m pip install opencv-python==4.5.3.56

まとめ

記事数をカサ増しするような内容ですが、将来的に役立つんじゃないかって思ってます。