はじめに
Raspberry Pi に Python3.6をinstallしてみた の続きです。
Raspberry Pi に OpenCVをinstallしました。
後々で動画を保存する機能のみ使うので必要最低限のbuildをしています。
方法
⑴ 必要なパッケージをインストール
sudo apt-get install build-essential
sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev
⑵ opecv をdownload
wget https://github.com/opencv/opencv/archive/3.4.3.zip
unzip 3.4.3.zip
cd ./opencv-3.4.3
⑶ opecv をinstall
$ mkdir build
$ cd build
$ cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local \
-D WITH_OPENCL=OFF -D WITH_CUDA=OFF -D BUILD_opencv_gpu=OFF \
-D BUILD_opencv_gpuarithm=OFF -D BUILD_opencv_gpubgsegm=OFF \
-D BUILD_opencv_gpucodec=OFF -D BUILD_opencv_gpufeatures2d=OFF \
-D BUILD_opencv_gpufilters=OFF -D BUILD_opencv_gpuimgproc=OFF \
-D BUILD_opencv_gpulegacy=OFF -D BUILD_opencv_gpuoptflow=OFF \
-D BUILD_opencv_gpustereo=OFF -D BUILD_opencv_gpuwarping=OFF \
-D BUILD_DOCS=OFF -D BUILD_TESTS=OFF \
-D BUILD_PERF_TESTS=OFF -D BUILD_EXAMPLES=OFF \
-D BUILD_opencv_python3=ON -D FORCE_VTK=ON \
-D WITH_TBB=ON -D WITH_V4L=ON \
-D WITH_OPENGL=ON -D WITH_CUBLAS=ON \
-D WITH_FFMPEG=ON ..
$ sudo make -j 4
$ sudo install
$ sudo ldconfig
なぜこんなにコマンドが長いですが、sample codeやGPUの設定をoffにして必要のないlibファイルを作成しないようにするためです。(詳細はInstall OpenCV-Python in Fedora:Configuring and Installing)
で、pythonベースでcv2.VideoCapture(0)
を使って動画を起動して、avi形式で保存するappを作成を考えています。そのため、-D BUILD_opencv_python3=ON -D WITH_FFMPEG=ON
のフラグが必須です。 ないと、画像(静止画)の保存はできますが動画再生はできないです。
もしmakeが進まないと思ったら。。。
また、このまま make
すると opencv_python3
のlibファイル生成時にロード中のままで止まってしまいます。解消法としてはRaspberryPi自体のswap領域を拡張することです。
$ sudo vim /etc/dphys-swapfile
# set size to absolute value, leaving empty (default) then uses computed value
# you most likely don't want this, unless you have an special disk situation
# 1024~2048 に数値変更
CONF_SWAPSIZE=1024
$ sudo systemctl stop dphys-swapfile
$ sudo systemctl start dphys-swapfile
$ free -h
total used free shared buff/cache available
Mem: 874M 147M 139M 25M 588M 643M
Swap: 1.0G 1.0M 1.0G
⑷ numpyをインストール
$ sudo pip3 install numpy
(5) 確認
$ python3
Python 3.6.8 (default, Jun 17 2019, 16:55:54)
[GCC 6.3.0 20170516] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import numpy
>>> import cv2
>>> cv2.__version__
'3.4.6'
>>>
おわりに
(3) で cmakeするときの設定ですが、raspberrypiの環境と自分の使いたい機能を確認してから-D XXX
とセットすると良いです。今使っているmicroSDの容量が16GBしかないので、何もしないと要らない機能までlibファイルが作成されるのですぐにfullfullになってしまいます。
reference
Required Packages
Raspberry Pi CameraモジュールとOpenCVで人間の顔を認識する
Installing OpenCV 3.4.3 on Raspberry Pi 3 Model B+
OpenCVのVideo Writerではきだした動画が再生できない。Ubuntu環境です。
ラズパイにOpenCVをインストールした時に困った事とその解決策
ラズパイ(Raspbian Jessie)とスワップメモリ容量の変更(環境設定の続き)