260.ラズパイ無双[7_Install OpenCV 4.5]
初回:2022/6/8
Raspberry Pi (ラズベリーパイ、通称"ラズパイ")で何か作ってみようという新シリーズです。前回までに基本設定が出来ましたので、本題の『openCV』の環境づくりに取り組みたいと思います。
なお、下記にご紹介する手順が、本当に正しいのか判りません。というのは私の環境では、Warning が出ます。そして、USBカメラを2台つなぐと動きませんし、PiCameraも動作しません。そしてカメラの設定もうまくできないようですし、カメラのフレームレート(FPS)も遅いです。
P子「全然ダメダメって事?」※1
なので、openCVの設定は、自己責任でお願いします。ただし、今回、ラズパイには、Bullseye 64bit版を設定していますので、その性能を発揮するには、ソースからビルドする必要があると思っています。
≪参考資料≫
https://qengineering.eu/install-opencv-4.5-on-raspberry-64-os.html
Install OpenCV 4.5 on Raspberry 64 OS
1.初めに
1.OpenCV 4.5.5
Python3インストールスクリプトが正しく変更されていません。
すべてのライブラリが間違ったディレクトリに配置され、Pythonはそれらを検出しません。
-D PYTHON3_PACKAGES_PATH=/usr/lib/python3/dist-packages
をビルドに追加することにより、ライブラリは正しいフォルダーに保存されます。
2.バージョンチェック
$ uname -a
aarch64 を確認
$ gcc -v
aarch64-linux-gnu を確認
3.スワップチェック
※ 先に【256.ラズパイ無双[4.SDカード延命]】で、スワップを無効にしているので、サービスを再開します
$ sudo systemctl enable dphys-swapfile
$ sudo systemctl start dphys-swapfile
$ systemctl status dphys-swapfile
$ free -h
Raspberry pi 3B+
$ sudo nano /etc/dphys-swapfile
#CONF_SWAPSIZE=100
CONF_SWAPSIZE=6144
4.5.62 は、4GBまたは8GBのメモリを搭載したRaspberryPi4を使用している場合は、何も変更されません
2GBのRAMを搭載し たRaspberryPi4を使用している場合にのみ、zram構成ファイルのスワップスペースを増やす必要があります
$ sudo nano /usr/bin/zram.sh
# alter the limit with * 2
mem=$(( ($totalmem / $cores)* 1024 * 3))
# save with <Ctrl+X>,
$ sudo reboot
4.5.0-4.5.1
少なくとも合計5.5GBのメモリが必要です
オンボードに4GバイトのRAMを搭載したRaspberryPiを使用する場合は、最大2048Gバイトに増やす必要があります。
4.EEPROMチェック
※ Raspbery Pi 4 のみ
EEPROMソフトウェアのバージョン
EEPROMの内容を更新するだけで、CPUの熱が65°C(149°F)から48°C(118°F)に低下します。
# 現在のステータスを取得するには
$ sudo rpi-eeprom-update
# 必要に応じて、ファームウェアを更新します
$ sudo rpi-eeprom-update -a
$ sudo reboot
5.悪い考え
RaspberryPiにOpenCVをインストールするためにpip3を使用しないでください。
$ sudo apt installも使用しません。
6.GPUメモリ
必要に応じて少なくとも128Mバイトに変更します
設定 → Raspberry Piの設定 → パフォーマンス → GPUメモリ を変更
7.インストールスクリプト
#最初にあなたの記憶をチェックしてください
$ free -m
#少なくとも合計6.5 GBが必要です!
#そうでない場合は、ガイドで説明されているようにスワップスペースを拡大します
$ wget https://github.com/Qengineering/Install-OpenCV-Raspberry-Pi-64-bits/raw/main/OpenCV-4-5-5.sh
$ sudo chmod 755 ./OpenCV-4-5-5.sh
$ ./OpenCV-4-5-5.sh
2.依存関係
8.依存関係
# 更新を確認します
$ sudo apt update
$ sudo apt -y upgrade
# 依存関係
$ sudo apt install build-essential cmake git unzip pkg-config
$ sudo apt install libjpeg-dev libpng-dev
$ sudo apt install libavcodec-dev libavformat-dev libswscale-dev
$ sudo apt install libgtk2.0-dev libcanberra-gtk* libgtk-3-dev
$ sudo apt install libgstreamer1.0-dev gstreamer1.0-gtk3
$ sudo apt install libgstreamer-plugins-base1.0-dev gstreamer1.0-gl
$ sudo apt install libxvidcore-dev libx264-dev
$ sudo apt install python3-dev python3-numpy python3-pip
$ sudo apt install libtbb2 libtbb-dev libdc1394-22-dev
$ sudo apt install libv4l-dev v4l-utils
$ sudo apt install libopenblas-dev libatlas-base-dev libblas-dev
$ sudo apt install liblapack-dev gfortran libhdf5-dev
$ sudo apt install libprotobuf-dev libgoogle-glog-dev libgflags-dev
$ sudo apt install protobuf-compiler
9.Qt5
OpenCVの動作には絶対に必須ではなく 、外観を装飾するだけです。
Qt5 を使用すると、OpenCVの速度が数パーセント低下することは言うまでもありません。
#Qt5が必要な場合にのみインストール
#OpenCVGUI を美化するには
$ sudo apt install qt5-default
3.OpenCVをダウンロード
10.OpenCVをダウンロード
https://opencv.org/releases/
Sources から取得する。
# check your memory first
$ free -m
# you need at least a total of 6.5 GB!
# if not, enlarge your swap space as explained earlier
# download the latest version
$ cd ~
$ wget -O opencv.zip https://github.com/opencv/opencv/archive/4.5.5.zip
$ wget -O opencv_contrib.zip https://github.com/opencv/opencv_contrib/archive/4.5.5.zip
# unpack
$ unzip opencv.zip
$ unzip opencv_contrib.zip
# some administration to make live easier later on
$ mv opencv-4.5.5 opencv
$ mv opencv_contrib-4.5.5 opencv_contrib
# clean up the zip files
$ rm opencv.zip
$ rm opencv_contrib.zip
11.仮想環境
仮想環境は使用しません
12.TensorFlow
TensorFlowとOpenCVの両方をPythonにインポートすると、エラーがスローされる可能性があります 。
この動作はaarch64システムでのみ発生し、OpenMPメモリ要件が満たされていないことが原因です。
最初にOpenCVをインポートするのが最も簡単です。
>>> import cv2
>>> import tensorflow
4.Build Make
13.Build Make
ビルドファイルを配置できるディレクトリを作成する。
$ cd ~/opencv
$ mkdir build
$ cd build
$ cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib/modules \
-D ENABLE_NEON=ON \
-D WITH_OPENMP=ON \
-D WITH_OPENCL=OFF \
-D BUILD_TIFF=ON \
-D WITH_FFMPEG=ON \
-D WITH_TBB=ON \
-D BUILD_TBB=ON \
-D WITH_GSTREAMER=ON \
-D BUILD_TESTS=OFF \
-D WITH_EIGEN=OFF \
-D WITH_V4L=ON \
-D WITH_LIBV4L=ON \
-D WITH_VTK=OFF \
-D WITH_QT=OFF \
-D OPENCV_ENABLE_NONFREE=ON \
-D INSTALL_C_EXAMPLES=OFF \
-D INSTALL_PYTHON_EXAMPLES=OFF \
-D PYTHON3_PACKAGES_PATH=/usr/lib/python3/dist-packages \
-D OPENCV_GENERATE_PKGCONFIG=ON \
-D BUILD_EXAMPLES=OFF ..
14.Make
$ make -j4
$ sudo make install
$ sudo ldconfig
# cleaning (frees 300 KB)
$ make clean
$ sudo apt update
5.Checking
15.Checking
OpenCVは /usr/local ディレクトリにインストールされ、すべてのファイルが次の場所にコピーされます。
/usr/local/bin - 実行可能ファイル
/usr/local/lib - lib-ライブラリ(.so)
/usr/local/cmake/opencv4 - cmakeパッケージ
/usr/local/include/opencv4 - ヘッダー
/usr/local/share/opencv4 - その他のファイル(例:XML形式のトレーニング済みカスケード)
$ python
Python 3.9.2 (default, Mar 12 2021, 04:06:34)
[GCC 10.2.1 20210110] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import cv2
>>> cv2.__version__
'4.5.5'
>>>
16.クリーニング
$ sudo nano /etc/dphys-swapfile
set CONF_SWAPSIZE=100 with the Nano text editor
$ sudo reboot
ディスク容量が不足している場合は、~/opencvフォルダーと~/opencv_contribフォルダーを削除することを検討 してください。
# just a tip to save some space
$ sudo rm -rf ~/opencv
$ sudo rm -rf ~/opencv_contrib
6.最後に
とにもかくにも、openCV のインストールが完了しましたので、次回からはこれを中心に解説していきたいと思います。
ほな、さいなら
======= <<注釈>>=======
※1 P子「全然ダメダメって事?」
P子とは、私があこがれているツンデレPythonの仮想女性の心の声です。