忍者ブログ

Fグループ電子工作講座

秋月電子SH7125ボードで始めるマイコン開発

RaspberryPiへOpenCVを導入(オフライン)

前回はラズベリーパイをインターネットへ接続した状態でOpenCVを導入しました。
今回は学校や会社のセキュリティーの都合上、どうしてもラズパイをインターネットへ繋げない人向けの方法です。

オンラインでインストールした方が圧倒的に簡単&確実です。

ラズパイをインターネットに繋がないものの、必要なファイルはパソコン等でダウンロード
する必要があります。周辺機能:52MB、OpenCV:144MB

OpenCVとOpenCV_contrib以外に周辺機能のファイルを個別で78個ダウンロードすることに
なってしまいました。
apt-get installでインストールすれば依存関係のファイルも自動でダウンロードしてくれますが、
オフラインなので一個ずつ依存関係を確認して自分でダウンロードする必要がありとてもめんどくださいです。
update、upgradeせずにインストールするので後々不具合が出る可能性があります。



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-config
sudo apt-get install libjpeg-dev libtiff5-dev libjasper-dev libpng12-dev
sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev
sudo apt-get install libxvidcore-dev libx264-dev
sudo apt-get install libgtk2.0-dev
sudo apt-get install libatlas-base-dev gfortran
sudo apt-get install python-dev python3-dev
sudo apt-get install python-pip
sudo apt-get install python3-pip
sudo pip install numpy
sudo pip3 install numpy
を実行すれば良いのですがオフラインだとこの部分が滅茶苦茶めんどくさくなります。

参考:ソノターネット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.deb
sudo dpkg -i libxvidcore-dev_1.3.4-1_armhf.deb
sudo dpkg -i libx264-dev_0.148.2748+git97eaef2-1+rpi1_armhf.deb

sudo dpkg -i cmake-data_3.7.2-1_all.deb
sudo dpkg -i libjsoncpp1_1.7.4-3_armhf.deb
sudo dpkg -i libuv1_1.18.0-3~bpo9+1_armhf.deb
sudo dpkg -i libjpeg62-turbo-dev_1.5.1-2_armhf.deb
sudo dpkg -i libjbig-dev_2.1-3.1_armhf.deb
sudo dpkg -i liblzma-dev_5.2.2-1.2_armhf.deb
sudo dpkg -i libtiffxx5_4.0.8-2+deb9u4_armhf.deb
sudo dpkg -i libjasper1_1.900.1-debian1-2.4+deb8u1_armhf.deb
sudo dpkg -i libavutil-dev_3.2.12-1~deb9u1+rpt1_armhf.deb
sudo dpkg -i libswresample-dev_3.2.12-1~deb9u1+rpt1_armhf.deb
sudo dpkg -i gir1.2-gtk-2.0_2.24.31-2_armhf.deb
sudo dpkg -i libxml2-utils_2.9.4+dfsg1-2.2+deb9u2_armhf.deb
sudo dpkg -i libatlas3-base_3.10.3-1+rpi1_armhf.deb

sudo dpkg -i cmake_3.7.2-1_armhf.deb
sudo dpkg -i cmake-qt-gui_3.7.2-1_armhf.deb
sudo dpkg -i libjpeg-dev_1.5.1-2_all.deb
sudo dpkg -i libtiff5-dev_4.0.8-2+deb9u4_armhf.deb
sudo dpkg -i libjasper-dev_1.900.1-debian1-2.4+deb8u1_armhf.deb
sudo dpkg -i libavcodec-dev_3.2.12-1~deb9u1+rpt1_armhf.deb
sudo dpkg -i libavformat-dev_3.2.12-1~deb9u1+rpt1_armhf.deb
sudo dpkg -i libswscale-dev_3.2.12-1~deb9u1+rpt1_armhf.deb

sudo dpkg -i libfontconfig1-dev_2.11.0-6.7_armhf.deb
sudo dpkg -i libcairo-script-interpreter2_1.14.8-1+rpi1_armhf.deb
sudo dpkg -i libpixman-1-dev_0.34.0-1+rpi1_armhf.deb
sudo dpkg -i x11proto-kb-dev_1.0.7-1_all.deb
sudo dpkg -i xtrans-dev_1.3.5-1_all.deb
sudo dpkg -i x11proto-xinerama-dev_1.2.1-2_all.deb
sudo dpkg -i xorg-sgml-doctools_1.11-1_all.deb
sudo dpkg -i x11proto-randr-dev_1.5.0-1_all.deb
sudo dpkg -i libgfortran-6-dev_6.3.0-18+rpi1+deb9u1_armhf.deb
sudo dpkg -i libpcre32-3_8.39-3_armhf.deb
sudo dpkg -i libpcrecpp0v5_8.39-3_armhf.deb
sudo dpkg -i libharfbuzz-gobject0_1.4.2-1_armhf.deb
sudo dpkg -i libgraphite2-dev_1.3.10-1_armhf.deb
sudo dpkg -i libpthread-stubs0-dev_0.3-4_armhf.deb
sudo dpkg -i icu-devtools_57.1-6+deb9u2_armhf.deb

sudo dpkg -i libpcre3-dev_8.39-3_armhf.deb
sudo dpkg -i x11proto-core-dev_7.0.31-1_all.deb
sudo dpkg -i libicu-dev_57.1-6+deb9u2_armhf.deb
sudo dpkg -i libxau-dev_1.0.8-1_armhf.deb
sudo dpkg -i libxdmcp-dev_1.1.2-3_armhf.deb
sudo dpkg -i x11proto-input-dev_2.3.2-1_all.deb
sudo dpkg -i libice-dev_1.0.9-2_armhf.deb
sudo dpkg -i x11proto-render-dev_0.11.1-2_all.deb
sudo dpkg -i libsm-dev_1.2.2-1+b1_armhf.deb
sudo dpkg -i libxcb1-dev_1.12-1_armhf.deb
sudo dpkg -i x11proto-xext-dev_7.3.0-1_all.deb
sudo dpkg -i libxcb-render0-dev_1.12-1_armhf.deb
sudo dpkg -i libxcb-shm0-dev_1.12-1_armhf.deb
sudo dpkg -i x11proto-fixes-dev_5.0-2_all.deb
sudo dpkg -i x11proto-composite-dev_0.4.2-2_all.deb
sudo dpkg -i x11proto-damage-dev_1.2.1-2_all.deb

sudo dpkg -i libglib2.0-dev_2.50.3-2_armhf.deb
sudo dpkg -i libx11-dev_1.6.4-3+deb9u1_armhf.deb
sudo dpkg -i gfortran-6_6.3.0-18+rpi1+deb9u1_armhf.deb
sudo dpkg -i libgdk-pixbuf2.0-dev_2.36.5-2+deb9u2_armhf.deb
sudo dpkg -i libatk1.0-dev_2.22.0-1_armhf.deb
sudo dpkg -i libxext-dev_1.3.3-1_armhf.deb
sudo dpkg -i libxfixes-dev_5.0.3-1_armhf.deb
sudo dpkg -i libxinerama-dev_1.1.3-1+b1_armhf.deb
sudo dpkg -i libxi-dev_1.7.9-1_armhf.deb
sudo dpkg -i libxcomposite-dev_0.4.4-2_armhf.deb
sudo dpkg -i libxdamage-dev_1.1.4-2+b1_armhf.deb

sudo dpkg -i gfortran_6.3.0-4_armhf.deb

sudo dpkg -i libharfbuzz-dev_1.4.2-1_armhf.deb
sudo dpkg -i libxrender-dev_0.9.10-1_armhf.deb
sudo dpkg -i libxft-dev_2.3.2-1_armhf.deb
sudo dpkg -i libblas-dev_3.7.0-2_armhf.deb

sudo dpkg -i libcairo2-dev_1.14.8-1+rpi1_armhf.deb
sudo dpkg -i libxrandr-dev_1.5.1-1_armhf.deb
sudo dpkg -i libxcursor-dev_1.1.14-1+deb9u2_armhf.deb
sudo dpkg -i libatlas-dev_3.10.3-1+rpi1_armhf.deb
sudo dpkg -i libpango1.0-dev_1.40.5-1_armhf.deb

sudo dpkg -i libgtk2.0-dev_2.24.31-2_armhf.deb
sudo 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.zip
unzip 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 ~/opencv
mkdir build
フォルダの作成はファイルマネージャーで行っても構いません。

続いてどの機能をビルドするか決めるmakeファイルを作成します。

先ほど作成したフォルダをターミナルで選択します。
cd ~/opencv/build

makeファイルを作成しますが、自分でビルドのオプションを調整したい場合は
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が完了したら一度再起動しておきます。

reboot

3.ビルド

いよいよビルドです。
ビルドには2~3時間ぐらいかかりました。

とりあえずbuildフォルダへ移動して
cd ~/opencv/build

ビルドを実行します。
しっかり放熱できている場合は4コア使って並列ビルド
make -j4

放熱が心配な場合はコア数を減らしたり
make -j2

1コアでビルドして対応します。
make

ちなみにボード裏面に配置されたメモリもかなり発熱するので注意が必要です。

容量不足、メモリ不足、放熱不足でビルドが途中で失敗した場合は設定を修正した後に
再度ビルドを実行すれば、ビルド済みの部分はスキップされ、ビルドが中断した個所から
ビルドが再開されます。失敗した場合でももう一度同じコマンドを実行してみましょう。

設定変更して再起動した場合はもう一度
cd ~/opencv/build
で移動した後
make -j4
でリトライします。



ビルドが成功しました。
ここまで来ればあと少しです。

ビルドできたファイルをインストールして

sudo make install



関連付け設定をすれば

sudo ldconfig



長かったインストール作業は完了です。

4.インストールできたか確認

pythonからOpenCVを読み出せるか確認しておきます。

python

>>> が出たらこれに続けて

import cv2

エラーが出なければ続けて

cv2.__version__

でインストールされたOpenCVのバージョンを確認する事が出来ます。



pythonを終了するには

exit()

python3でも同様のコマンドで確認ができます。



オフラインでもOpenCVを導入する事が出来ました。
PR

コメント

プロフィール

HN:
ぼんどF博士
性別:
男性

最新コメント