OSのインストールについては
Raspbianのインストールの回を参照してください。
sudo apt-get installであれこれ入れるところ以外は
前回の手順と同様です。
参考:Qiita@nanbuwks様
OpenCV + Python3 on Raspberry Pi参考:Qiita@Laundly_KUW様
RaspberryPi (3 Model B+) へのOpenCV(3.4.2)のインストール参考:Qiita@takahiro_itazuri様
ラズパイにOpenCVをインストールする方法1.ラズベリーパイの設定変更
先に説明したメモリ不足と容量不足の対策を行っておきます。
スワップメモリの設定変更
現状を確認します。
ターミナルを開いて
free -h この部分がスワップメモリの容量です。
100MBしかありません。
そこで設定ファイル(/etc/dphys-swapfile)を編集してスワップメモリを増やします。
ただし、普通にテキストエディタで開くと保存できません。
そこで、テキストエディタを管理者権限で実行します。
sudo leafpadテキストエディタが起動するので設定ファイル/etc/dphys-swapfileを開きます
ファイル>開く
etcファルダはファイル・システムから開きます
設定ファイル/etc/dphys-swapfileにたどり着きました
設定値を変更します。
CONF_SWAPSIZE=100
を
CONF_SWAPSIZE=1024
ぐらいに増やして保存します。
ファイルを編集した段階では機能は更新されていません。
メモリスワップ機能を停止→開始すれば更新されるのですが、
コマンドを打つのが面倒なので再起動します。
reboot個人的にはコマンドを調べて入力するより再起動した方が短い時間で済みました。
スワップメモリが増えたか確認します。
free -h 増えました。
SDカードの使用領域確認
前回の手順でOSをインストールした場合は、自動的に拡張設定されるので変更は必要ありません。
とりあえず確認だけしておきます。
df -h この部分が使用可能領域です。
SDカードの容量と同じぐらいならOKですが、明らかに小さい場合は拡張が必要です。
ダメな場合の例
16GBのSDカードに対して5.2GBしか容量がありません。
拡張できていない場合は、
参考:Qiita@niwaken様
raspberry pi3でファイルシステムを拡張する方法(raspbian stretch版)sudo raspi-config --expand-rootfs 使用中で反映できないから再起移動しろと言われるの再起動します
rebootこれで全領域が使える等になります。
これで色々インストールする準備が整いました。
3.画像処理に必要な機能のインストール
オンラインの場合sudo apt-get install build-essential cmake pkg-configsudo apt-get install libjpeg-dev libtiff5-dev libjasper-devsudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-devsudo apt-get install libxvidcore-dev libx264-devsudo apt-get install libgtk2.0-devsudo apt-get install libatlas-base-dev gfortransudo apt-get install python-dev python3-devsudo apt-get install python-pipsudo apt-get install python3-pipsudo pip install numpysudo pip3 install numpyを実行すれば良いのですがオフラインだとこの部分が滅茶苦茶めんどくさくなります。
※2024/10/30 libpng12-devを除外
参考:ソノターネット2様
Raspberry Pi 3 オフラインでソフトのインストール基本的には
・
sudo apt-get download 機能名 でダウンロード先を調べて
・パソコンでダウンロードして
・
sudo dpkg -i ファイル名 でインストール
を繰り返します。
必要なファイル等の結果だけ知りたい方は「
インストールしたファイル」まで読み飛ばしてください。
1)本当にインストールが必要な機能か確認する
インストール済みの機能を再度オフラインでインストールするのは馬鹿馬鹿しいので
sudo apt-get install 機能名で状況を調べます。
この様に出てきた場合は追加不要です
追加が必要な場合は
※オフライン状態なので「n」を入力してキャンセル
ファイルをダウンロードする必要があります。
ダウンロードが必要なのは
cmake
cmake-qt-gui ※GUI版のcmakeを使う場合のみ
libjpeg-dev
libtiff5-dev
libjasper-dev
libavcodec-dev
libavformat-dev
libswscale-dev
libv4l-dev
libxvidcore-dev
libx264-dev
libgtk2.0-dev
libatlas-base-dev
gfortran
インストール不要だったもの(raspibian2019-04-09にて)
build-essential インストール済み
pkg-config インストール済み
libpng12-dev 機能が競合すると言われるので入れない(後で問題が出るかも)
python-dev インストール済み
python3-dev インストール済み
python-pip インストール済み
python3-pip インストール済み
2)ラズパイでファイルのダウンロード先を調べる
sudo apt-get install 機能名の代わりに
sudo apt-get download 機能名を実行すると機能を自動ダウンロードしようとしてエラーが出ます。
E: http://raspbian.raspberrypi.org/raspbian/pool/main/c/cmake/cmake_3.7.2-1_armh
f.deb の取得に失敗しました
とか出てくるのがファイルのダウンロード先です。
このアドレスをテキストファイルなどに記録していきます。
script機能を使ってターミナルのログを取るのが楽だと思います。
(参考:yusuke様
scriptコマンドで作業ログを記録)
3)PC等で該当のファイルをダウンロードする
PCのインターネットブラウザへアドレスを直接入力でもしてダウンロードしてください。
ダウンロードしたファイルはUSBメモリなどでラズパイに移します。
ラズパイにUSBメモリを挿せばPCと同じように扱えます。
ラズパイ上にフォルダを作成して、ダウンロードしたファイルを入れていきます。
ホームディレクトリ(/home/pi)直下にlibsというフォルダを作成し、その中にファイルを入れました。フォルダ名は何でも構いません。
usbメモリを取り外す時は右上のアイコンから
4)インストールする
ターミナルを開いてダウンロードしたファイルがあるディレクトリ(libs)へ移動して
cd libsインストールを実行します。
sudo dpkg -i ファイル名と、簡単そうに見えますがある親機能をインストールするのに子機能が必要となるので、
インストールが中断します。
「パッケージ***はまだインストールされていません」と出ている場合は子機能を一度も
インストールしていない状態です。
「パッケージ***はまだ設定されていません」と出ている場合は子機能を一度インストール
したものの、孫機能の不足などでインストールが完了していない状態です。
孫機能をインストール後再度子機能のインストールを実行すれば親機能がインストールの
設定が完了します。
必要と判明した子機能、孫機能、ひ孫機能について1~4を繰り返します。
インストールしたファイル
raspbian-2019-04-09(Stretch最終バージョン)にて一度もupdateもupgradeも
行っていない場合、最終的に以下のファイルが必要でした
親http://raspbian.raspberrypi.org/raspbian/pool/main/c/cmake/cmake_3.7.2-1_armhf.deb
http://raspbian.raspberrypi.org/raspbian/pool/main/c/cmake/cmake-qt-gui_3.7.2-1_armhf.deb
http://raspbian.raspberrypi.org/raspbian/pool/main/libj/libjpeg-turbo/libjpeg-dev_1.5.1-2_all.deb
http://raspbian.raspberrypi.org/raspbian/pool/main/t/tiff/libtiff5-dev_4.0.8-2+deb9u4_armhf.deb
http://raspbian.raspberrypi.org/raspbian/pool/main/j/jasper/libjasper-dev_1.900.1-debian1-2.4+deb8u1_armhf.deb
http://archive.raspberrypi.org/debian/pool/main/f/ffmpeg/libavcodec-dev_3.2.12-1~deb9u1+rpt1_armhf.deb
http://archive.raspberrypi.org/debian/pool/main/f/ffmpeg/libavformat-dev_3.2.12-1~deb9u1+rpt1_armhf.deb
http://archive.raspberrypi.org/debian/pool/main/f/ffmpeg/libswscale-dev_3.2.12-1~deb9u1+rpt1_armhf.deb
http://raspbian.raspberrypi.org/raspbian/pool/main/v/v4l-utils/libv4l-dev_1.12.3-1_armhf.deb
http://raspbian.raspberrypi.org/raspbian/pool/main/x/xvidcore/libxvidcore-dev_1.3.4-1_armhf.deb
http://raspbian.raspberrypi.org/raspbian/pool/main/x/x264/libx264-dev_0.148.2748+git97eaef2-1+rpi1_armhf.deb
http://raspbian.raspberrypi.org/raspbian/pool/main/g/gtk+2.0/libgtk2.0-dev_2.24.31-2_armhf.deb
http://raspbian.raspberrypi.org/raspbian/pool/main/a/atlas/libatlas-base-dev_3.10.3-1+rpi1_armhf.deb
http://raspbian.raspberrypi.org/raspbian/pool/main/g/gcc-defaults/gfortran_6.3.0-4_armhf.deb
子http://raspbian.raspberrypi.org/raspbian/pool/main/c/cmake/cmake-data_3.7.2-1_all.deb
http://raspbian.raspberrypi.org/raspbian/pool/main/libj/libjsoncpp/libjsoncpp1_1.7.4-3_armhf.deb
http://archive.raspberrypi.org/debian/pool/main/libu/libuv1/libuv1_1.18.0-3~bpo9+1_armhf.deb
http://raspbian.raspberrypi.org/raspbian/pool/main/libj/libjpeg-turbo/libjpeg62-turbo-dev_1.5.1-2_armhf.deb
http://raspbian.raspberrypi.org/raspbian/pool/main/j/jbigkit/libjbig-dev_2.1-3.1_armhf.deb
http://raspbian.raspberrypi.org/raspbian/pool/main/x/xz-utils/liblzma-dev_5.2.2-1.2_armhf.deb
http://raspbian.raspberrypi.org/raspbian/pool/main/t/tiff/libtiffxx5_4.0.8-2+deb9u4_armhf.deb
http://raspbian.raspberrypi.org/raspbian/pool/main/j/jasper/libjasper1_1.900.1-debian1-2.4+deb8u1_armhf.deb
http://archive.raspberrypi.org/debian/pool/main/f/ffmpeg/libavutil-dev_3.2.12-1~deb9u1+rpt1_armhf.deb
http://archive.raspberrypi.org/debian/pool/main/f/ffmpeg/libswresample-dev_3.2.12-1~deb9u1+rpt1_armhf.deb
http://raspbian.raspberrypi.org/raspbian/pool/main/g/gtk+2.0/gir1.2-gtk-2.0_2.24.31-2_armhf.deb
http://raspbian.raspberrypi.org/raspbian/pool/main/g/glib2.0/libglib2.0-dev_2.50.3-2_armhf.deb
http://raspbian.raspberrypi.org/raspbian/pool/main/g/gdk-pixbuf/libgdk-pixbuf2.0-dev_2.36.5-2+deb9u2_armhf.deb
http://raspbian.raspberrypi.org/raspbian/pool/main/p/pango1.0/libpango1.0-dev_1.40.5-1_armhf.deb
http://raspbian.raspberrypi.org/raspbian/pool/main/a/atk1.0/libatk1.0-dev_2.22.0-1_armhf.deb
http://archive.raspberrypi.org/debian/pool/main/c/cairo/libcairo2-dev_1.14.8-1+rpi1_armhf.deb
http://raspbian.raspberrypi.org/raspbian/pool/main/libx/libx11/libx11-dev_1.6.4-3+deb9u1_armhf.deb
http://raspbian.raspberrypi.org/raspbian/pool/main/libx/libxext/libxext-dev_1.3.3-1_armhf.deb
http://raspbian.raspberrypi.org/raspbian/pool/main/libx/libxinerama/libxinerama-dev_1.1.3-1+b1_armhf.deb
http://raspbian.raspberrypi.org/raspbian/pool/main/libx/libxi/libxi-dev_1.7.9-1_armhf.deb
http://raspbian.raspberrypi.org/raspbian/pool/main/libx/libxrandr/libxrandr-dev_1.5.1-1_armhf.deb
http://raspbian.raspberrypi.org/raspbian/pool/main/libx/libxcursor/libxcursor-dev_1.1.14-1+deb9u2_armhf.deb
http://raspbian.raspberrypi.org/raspbian/pool/main/libx/libxfixes/libxfixes-dev_5.0.3-1_armhf.deb
http://raspbian.raspberrypi.org/raspbian/pool/main/libx/libxcomposite/libxcomposite-dev_0.4.4-2_armhf.deb
http://raspbian.raspberrypi.org/raspbian/pool/main/libx/libxdamage/libxdamage-dev_1.1.4-2+b1_armhf.deb
http://raspbian.raspberrypi.org/raspbian/pool/main/libx/libxml2/libxml2-utils_2.9.4+dfsg1-2.2+deb9u2_armhf.deb
http://raspbian.raspberrypi.org/raspbian/pool/main/a/atlas/libatlas3-base_3.10.3-1+rpi1_armhf.deb
http://raspbian.raspberrypi.org/raspbian/pool/main/a/atlas/libatlas-dev_3.10.3-1+rpi1_armhf.deb
http://raspbian.raspberrypi.org/raspbian/pool/main/g/gcc-6/gfortran-6_6.3.0-18+rpi1+deb9u1_armhf.deb
孫、ひ孫http://raspbian.raspberrypi.org/raspbian/pool/main/p/pcre3/libpcre3-dev_8.39-3_armhf.deb
http://raspbian.raspberrypi.org/raspbian/pool/main/f/fontconfig/libfontconfig1-dev_2.11.0-6.7_armhf.deb
http://raspbian.raspberrypi.org/raspbian/pool/main/h/harfbuzz/libharfbuzz-dev_1.4.2-1_armhf.deb
http://raspbian.raspberrypi.org/raspbian/pool/main/x/xft/libxft-dev_2.3.2-1_armhf.deb
http://raspbian.raspberrypi.org/raspbian/pool/main/libx/libxrender/libxrender-dev_0.9.10-1_armhf.deb
http://archive.raspberrypi.org/debian/pool/main/c/cairo/libcairo-script-interpreter2_1.14.8-1+rpi1_armhf.deb
http://raspbian.raspberrypi.org/raspbian/pool/main/libs/libsm/libsm-dev_1.2.2-1+b1_armhf.deb
http://archive.raspberrypi.org/debian/pool/ui/p/pixman/libpixman-1-dev_0.34.0-1+rpi1_armhf.deb
http://raspbian.raspberrypi.org/raspbian/pool/main/libx/libxcb/libxcb1-dev_1.12-1_armhf.deb
http://raspbian.raspberrypi.org/raspbian/pool/main/libx/libxcb/libxcb-render0-dev_1.12-1_armhf.deb
http://raspbian.raspberrypi.org/raspbian/pool/main/libx/libxcb/libxcb-shm0-dev_1.12-1_armhf.deb
http://raspbian.raspberrypi.org/raspbian/pool/main/libx/libxau/libxau-dev_1.0.8-1_armhf.deb
http://raspbian.raspberrypi.org/raspbian/pool/main/libx/libxdmcp/libxdmcp-dev_1.1.2-3_armhf.deb
http://raspbian.raspberrypi.org/raspbian/pool/main/x/x11proto-core/x11proto-core-dev_7.0.31-1_all.deb
http://raspbian.raspberrypi.org/raspbian/pool/main/x/x11proto-input/x11proto-input-dev_2.3.2-1_all.deb
http://raspbian.raspberrypi.org/raspbian/pool/main/x/x11proto-kb/x11proto-kb-dev_1.0.7-1_all.deb
http://raspbian.raspberrypi.org/raspbian/pool/main/x/xtrans/xtrans-dev_1.3.5-1_all.deb
http://raspbian.raspberrypi.org/raspbian/pool/main/x/x11proto-xext/x11proto-xext-dev_7.3.0-1_all.deb
http://raspbian.raspberrypi.org/raspbian/pool/main/x/x11proto-xinerama/x11proto-xinerama-dev_1.2.1-2_all.deb
http://raspbian.raspberrypi.org/raspbian/pool/main/x/xorg-sgml-doctools/xorg-sgml-doctools_1.11-1_all.deb
http://raspbian.raspberrypi.org/raspbian/pool/main/x/x11proto-randr/x11proto-randr-dev_1.5.0-1_all.deb
http://raspbian.raspberrypi.org/raspbian/pool/main/x/x11proto-fixes/x11proto-fixes-dev_5.0-2_all.deb
http://raspbian.raspberrypi.org/raspbian/pool/main/x/x11proto-composite/x11proto-composite-dev_0.4.2-2_all.deb
http://raspbian.raspberrypi.org/raspbian/pool/main/x/x11proto-damage/x11proto-damage-dev_1.2.1-2_all.deb
http://raspbian.raspberrypi.org/raspbian/pool/main/l/lapack/libblas-dev_3.7.0-2_armhf.deb
http://raspbian.raspberrypi.org/raspbian/pool/main/g/gcc-6/libgfortran-6-dev_6.3.0-18+rpi1+deb9u1_armhf.deb
http://raspbian.raspberrypi.org/raspbian/pool/main/p/pcre3/libpcre32-3_8.39-3_armhf.deb
http://raspbian.raspberrypi.org/raspbian/pool/main/p/pcre3/libpcrecpp0v5_8.39-3_armhf.deb
http://raspbian.raspberrypi.org/raspbian/pool/main/h/harfbuzz/libharfbuzz-gobject0_1.4.2-1_armhf.deb
http://raspbian.raspberrypi.org/raspbian/pool/main/g/graphite2/libgraphite2-dev_1.3.10-1_armhf.deb
http://raspbian.raspberrypi.org/raspbian/pool/main/i/icu/libicu-dev_57.1-6+deb9u2_armhf.deb
http://raspbian.raspberrypi.org/raspbian/pool/main/libp/libpthread-stubs/libpthread-stubs0-dev_0.3-4_armhf.deb
http://raspbian.raspberrypi.org/raspbian/pool/main/i/icu/icu-devtools_57.1-6+deb9u2_armhf.deb
http://raspbian.raspberrypi.org/raspbian/pool/main/x/x11proto-render/x11proto-render-dev_0.11.1-2_all.deb
http://raspbian.raspberrypi.org/raspbian/pool/main/libi/libice/libice-dev_1.0.9-2_armhf.deb
合計78個、51.6MB
raspibian2019-04-09(stretch系最終)で必要となったファイルです。
OSのバージョンが違うとダウンロードするファイルが違うと思います。
インストールコマンドのリスト
依存関係の無いパッケージからインストールするように順番に並べました
sudo dpkg -i libv4l-dev_1.12.3-1_armhf.debsudo dpkg -i libxvidcore-dev_1.3.4-1_armhf.debsudo dpkg -i libx264-dev_0.148.2748+git97eaef2-1+rpi1_armhf.debsudo dpkg -i cmake-data_3.7.2-1_all.debsudo dpkg -i libjsoncpp1_1.7.4-3_armhf.debsudo dpkg -i libuv1_1.18.0-3~bpo9+1_armhf.debsudo dpkg -i libjpeg62-turbo-dev_1.5.1-2_armhf.debsudo dpkg -i libjbig-dev_2.1-3.1_armhf.debsudo dpkg -i liblzma-dev_5.2.2-1.2_armhf.debsudo dpkg -i libtiffxx5_4.0.8-2+deb9u4_armhf.debsudo dpkg -i libjasper1_1.900.1-debian1-2.4+deb8u1_armhf.debsudo dpkg -i libavutil-dev_3.2.12-1~deb9u1+rpt1_armhf.debsudo dpkg -i libswresample-dev_3.2.12-1~deb9u1+rpt1_armhf.debsudo dpkg -i gir1.2-gtk-2.0_2.24.31-2_armhf.debsudo dpkg -i libxml2-utils_2.9.4+dfsg1-2.2+deb9u2_armhf.debsudo dpkg -i libatlas3-base_3.10.3-1+rpi1_armhf.debsudo dpkg -i cmake_3.7.2-1_armhf.debsudo dpkg -i cmake-qt-gui_3.7.2-1_armhf.debsudo dpkg -i libjpeg-dev_1.5.1-2_all.debsudo dpkg -i libtiff5-dev_4.0.8-2+deb9u4_armhf.debsudo dpkg -i libjasper-dev_1.900.1-debian1-2.4+deb8u1_armhf.debsudo dpkg -i libavcodec-dev_3.2.12-1~deb9u1+rpt1_armhf.debsudo dpkg -i libavformat-dev_3.2.12-1~deb9u1+rpt1_armhf.debsudo dpkg -i libswscale-dev_3.2.12-1~deb9u1+rpt1_armhf.debsudo dpkg -i libfontconfig1-dev_2.11.0-6.7_armhf.debsudo dpkg -i libcairo-script-interpreter2_1.14.8-1+rpi1_armhf.debsudo dpkg -i libpixman-1-dev_0.34.0-1+rpi1_armhf.debsudo dpkg -i x11proto-kb-dev_1.0.7-1_all.debsudo dpkg -i xtrans-dev_1.3.5-1_all.debsudo dpkg -i x11proto-xinerama-dev_1.2.1-2_all.debsudo dpkg -i xorg-sgml-doctools_1.11-1_all.debsudo dpkg -i x11proto-randr-dev_1.5.0-1_all.debsudo dpkg -i libgfortran-6-dev_6.3.0-18+rpi1+deb9u1_armhf.debsudo dpkg -i libpcre32-3_8.39-3_armhf.debsudo dpkg -i libpcrecpp0v5_8.39-3_armhf.debsudo dpkg -i libharfbuzz-gobject0_1.4.2-1_armhf.debsudo dpkg -i libgraphite2-dev_1.3.10-1_armhf.debsudo dpkg -i libpthread-stubs0-dev_0.3-4_armhf.debsudo dpkg -i icu-devtools_57.1-6+deb9u2_armhf.debsudo dpkg -i libpcre3-dev_8.39-3_armhf.debsudo dpkg -i x11proto-core-dev_7.0.31-1_all.debsudo dpkg -i libicu-dev_57.1-6+deb9u2_armhf.debsudo dpkg -i libxau-dev_1.0.8-1_armhf.debsudo dpkg -i libxdmcp-dev_1.1.2-3_armhf.debsudo dpkg -i x11proto-input-dev_2.3.2-1_all.debsudo dpkg -i libice-dev_1.0.9-2_armhf.debsudo dpkg -i x11proto-render-dev_0.11.1-2_all.debsudo dpkg -i libsm-dev_1.2.2-1+b1_armhf.debsudo dpkg -i libxcb1-dev_1.12-1_armhf.debsudo dpkg -i x11proto-xext-dev_7.3.0-1_all.debsudo dpkg -i libxcb-render0-dev_1.12-1_armhf.debsudo dpkg -i libxcb-shm0-dev_1.12-1_armhf.debsudo dpkg -i x11proto-fixes-dev_5.0-2_all.debsudo dpkg -i x11proto-composite-dev_0.4.2-2_all.debsudo dpkg -i x11proto-damage-dev_1.2.1-2_all.debsudo dpkg -i libglib2.0-dev_2.50.3-2_armhf.debsudo dpkg -i libx11-dev_1.6.4-3+deb9u1_armhf.debsudo dpkg -i gfortran-6_6.3.0-18+rpi1+deb9u1_armhf.debsudo dpkg -i libgdk-pixbuf2.0-dev_2.36.5-2+deb9u2_armhf.debsudo dpkg -i libatk1.0-dev_2.22.0-1_armhf.debsudo dpkg -i libxext-dev_1.3.3-1_armhf.debsudo dpkg -i libxfixes-dev_5.0.3-1_armhf.debsudo dpkg -i libxinerama-dev_1.1.3-1+b1_armhf.debsudo dpkg -i libxi-dev_1.7.9-1_armhf.debsudo dpkg -i libxcomposite-dev_0.4.4-2_armhf.debsudo dpkg -i libxdamage-dev_1.1.4-2+b1_armhf.debsudo dpkg -i gfortran_6.3.0-4_armhf.debsudo dpkg -i libharfbuzz-dev_1.4.2-1_armhf.debsudo dpkg -i libxrender-dev_0.9.10-1_armhf.debsudo dpkg -i libxft-dev_2.3.2-1_armhf.debsudo dpkg -i libblas-dev_3.7.0-2_armhf.debsudo dpkg -i libcairo2-dev_1.14.8-1+rpi1_armhf.debsudo dpkg -i libxrandr-dev_1.5.1-1_armhf.debsudo dpkg -i libxcursor-dev_1.1.14-1+deb9u2_armhf.debsudo dpkg -i libatlas-dev_3.10.3-1+rpi1_armhf.debsudo dpkg -i libpango1.0-dev_1.40.5-1_armhf.debsudo dpkg -i libgtk2.0-dev_2.24.31-2_armhf.debsudo dpkg -i libatlas-base-dev_3.10.3-1+rpi1_armhf.deb「パッケージ***はまだ設定されていません」
と出ていたらもう一度そのパッケージのインストールを実行してください。
ちなみに
sudo apt --fix-broken installを実行すれば不足している機能が分かるみたいです。
最後にもう一度親のインストールを実行してエラーが出なければ周辺機能のインストール完了です。
インストールが完了したら元ファイル(*.deb)は消してもOKです。
OpenCVのインストール
いよいよOpenCVをインストールします
1.ソースファイルのダウンロード
2.cmakeでmakeファイルの作成
3.ビルド
1.ソースファイルのダウンロード
オフラインでセットアップするために元ファイルをPCでダウンロードしてUSBメモリでコピーします。
本家からダウンロードします。
OpenCV3系の最終バージョン3.4.6を使ってみます。
https://github.com/opencv/opencv/releases/tag/3.4.6
Source code (zip) OpenCV用の拡張機能も同じバージョンを使用します。
https://github.com/opencv/opencv_contrib/releases/tag/3.4.6
Source code (zip) 2つのzipファイルを/home/piへコピーします。
/home/piへ2つのzipファイルをコピーしたらzipファイルを展開します。
ファイルマネージャーで展開したらちゃんと動きませんでした。
PCで展開したものをコピーした場合は動きます。
ターミナルから展開します。
unzip opencv-3.4.6.zipunzip opencv_contrib-3.4.6.zip/home/piへopencv-3.4.6とopencv_contrib-3.4.6の二つのフォルダができます。
フォルダの名前を
opencv-3.4.6 → opencv
opencv_contrib-3.4.6 → opencv_contrib
へ変更します。
※githubからクローンした場合とフォルダ名を同じにするため。深い意味はありません。
2.cmakeでmakeファイルの作成
OpenCVには色々な機能があります。そこでどの機能を実際にビルドするのかcmakeを使って設定します。
まずビルド用フォルダを作成します。
ビルド用フォルダはダウンロードしたファイルがあるopencvフォルダ内に作成します。
cd ~/opencvmkdir buildフォルダの作成はファイルマネージャーで行っても構いません。
続いてどの機能をビルドするか決めるmakeファイルを作成します。
先ほど作成したフォルダをターミナルで選択します。
cd ~/opencv/buildmakeファイルを作成しますが、自分でビルドのオプションを調整したい場合は
GUI版のcmakeを使った方が分かりやすいと思います。
参考:ある計算機屋さんの手帳様
Raspberry PiでOpenCV3をビルド今回はターミナル版cmakeを使ってみます。
参考サイトによるとビルドの構成は以下となっています。
オフラインでOpenCV3.4.6のmakeファイルを作成するとエラーでビルドできません。
xfeatures2dがエラーの原因となるので、オプションで除外します。
※OpenCV3.2.0だとxfeasures2dはそのままでもビルドが通ります。
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D INSTALL_PYTHON_EXAMPLES=ON -D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib/modules -D BUILD_EXAMPLES=ON -D BUILD_opencv_xfeatures2d=OFF ..※最後の「
..」も忘れずに。
赤文字で示した部分はOpenCV_contribを展開した場所です。
各種作業後はメモリを消費したままになっているので、cmakeが完了したら一度再起動しておきます。
reboot3.ビルド
いよいよビルドです。
ビルドには2~3時間ぐらいかかりました。
とりあえずbuildフォルダへ移動して
cd ~/opencv/buildビルドを実行します。
しっかり放熱できている場合は
4コア使って並列ビルド
make -j4放熱が心配な場合はコア数を減らしたり
make -j21コアでビルドして対応します。
makeちなみにボード裏面に配置されたメモリもかなり発熱するので注意が必要です。
容量不足、メモリ不足、放熱不足でビルドが途中で失敗した場合は設定を修正した後に
再度ビルドを実行すれば、ビルド済みの部分はスキップされ、ビルドが中断した個所から
ビルドが再開されます。失敗した場合でももう一度同じコマンドを実行してみましょう。
設定変更して再起動した場合はもう一度
cd ~/opencv/buildで移動した後
make -j4でリトライします。
ビルドが成功しました。
ここまで来ればあと少しです。
ビルドできたファイルをインストールして
sudo make install関連付け設定をすれば
sudo ldconfig 長かったインストール作業は完了です。
4.インストールできたか確認
pythonからOpenCVを読み出せるか確認しておきます。
python>>> が出たらこれに続けて
import cv2エラーが出なければ続けて
cv2.__version__でインストールされたOpenCVのバージョンを確認する事が出来ます。
pythonを終了するには
exit()python3でも同様のコマンドで確認ができます。
オフラインでもOpenCVを導入する事が出来ました。