12-04-2018 07:30 AM
LINXではopkgコマンドからpython2やOpenCV(3.1.0)をインストール可能です。しかし、単純に下記のコマンドからインストールした場合、起動後にChroot環境内のresolv.confが空白になってしまう不具合が発生し、chroot環境からネットワークに接続するためにresolv.confを毎回書き換えなければならない状況になってしまいます。
opkg install opencv
また、インストールされるopencvが古い、python3が無い、python2でpipがインストールできないなどの問題もあります。
種々検討したところ、暫定ですが下記の手順によってそれらの問題を回避できましたので投稿させていただきます。まだ、再現確認や最適化に至っておりませんので、ご指摘や補足事項がございましたらコメント頂けますようお願いいたします。時間ができたらOpenCVインストール時のコマンドの意味を含めた調査をし、投稿したいと思います。
また、不適切な内容でしたら申し訳ございません。
///////////////////////////////////////////////////////////////////////////////////////////
(以下本文)
2018-11-13-raspbian-stretch-full.img
RPi3B+
1)labview-runtimeのインストール
*ランタイムのインストール
sudo sh -c 'echo "deb http://feeds.labviewmakerhub.com/debian/ binary/" >> /etc/apt/sources.list'
sudo apt-get update
sudo apt-get install -y --force-yes lvrt-schroot
*Chroot環境に入った後にファイルをリンクさせる
cd /
sudo schroot --run-session -c lv
cd /usr/lib
ln -s ./liblinxdevice_rpi2.so ./liblinxdevice.so
2)FeedからのOpenCV、Pythonのインストール
*Chroot環境下においてコマンドの追加
1.下記のコマンドでファイルを開く
cd
vi .bash_profile
2.下記を追記する
export PATH=$PATH:"/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
*gitとgit-devをインストールする
opkg update
opkg instal git git-dev
*FeedをQwaveに変更してPython2とOpenCVをインスールする
1.QwaveのFeedを追加する前に古いFeedをバックアップ
echo "arch raspberrypi2 71" | tee -a /etc/opkg/arch.conf
mv /etc/opkg/base-feeds.conf /etc/opkg/base-feeds.conf_bak
2.Feedを追加してアップデート
echo "src/gz uri-all-0 http://ftp.qwavesys.com/ipk/all" | tee -a /etc/opkg/base-feeds.conf
echo "src/gz uri-armv7a-vfp-0 http://ftp.qwavesys.com/ipk/armv7a-vfp" | tee -a /etc/opkg/base-feeds.conf
echo "src/gz uri-generic_armv7a-0 http://ftp.qwavesys.com/ipk/raspberrypi2" | tee -a /etc/opkg/base-feeds.conf
opkg update
参考)https://github.com/QWaveSystems/QwaveSys-RPi-Package_2.0
3.関連ファイルをインストール
opkg install libpng16-dev libtiffxx-dev libswscale-dev libv4l-dev libx264-dev python-dev libavformat-devopkg install userland packagegroup-core-buildessential wiringpi wiringpi-dev curl curl-dev openssl
4.3つ目に入力したファイルのインストールに失敗するため、再度インストールする。今回は「libswscale-dev」となる。
opkg install libswscale-dev
5.Python関連をインストールする。「python,python-dev」だけではpipのインストールに失敗するが、下記ファイルを全て入れてみたところインストールに成功した。必要ファイルの最適化未実施。
opkg install python-zlib python-crypt python-shell python-unixadmin python-unittest python-tkinter python-threading python-textutils python-tests python-terminal python-syslog python-subprocess python-stringold python-sqlite3 python-smtpd python-robotparser python-resource python-readline python-re python-pygobject-dev python-pygobject python-pydoc python-ptest python-profile python-pprint python-pkgutil python-pickle python-numpy-dev python-numbers python-nose-doc python-nose python-netserver python-netclient python-multiprocessing python-modules python-mmap python-misc python-mime python-math python-man python-mailbox python-logging python-lang
6.pipのインストール
wget https://bootstrap.pypa.io/get-pip.py
python get-pip.py
7.コンパイル関連のインストールを確認
opkg install cmake-dev pkgconfig packagegroup-core-buildessential-dev libgtk-3.0 gcc-dev
opkg install packagegroup-core-buildessential-dev
8.numpyをアップデートしてOpenCV(3.1.0)をインストール
pip install numpy
opkg install opencv
9.下記のコマンドからインストールされていることを確認する
python
import cv2
cv2.__version__
注)cv2は下記の場所に格納されている
/usr/lib/python2.7/site-packages
3)Python3とnumpyのインストール
wget https://www.python.org/ftp/python/3.6.6/Python-3.6.6.tgz
tar -zxvf Python-3.6.6.tgz
cd Python-3.6.6
./configure --prefix=/usr/local
make
make install
pip3 install --upgrade pip
pip3 install numpy
注)python3用のpipは「pip3」で呼び出す。また、python3は「python3」で呼び出す。
pip、pythonを入力するとpython2が呼び出されてしまう。
4)OpenCV3.4.4のインストール
*古いOpenCVのアンインストール
opkg remove opencv opencv-apps opencv-example
*Chrootログイン直後の状態で作業用フォルダを作成
mkdir test
cd test
*OpenCVのダウンロード~ビルド
1.OpenCVのダウンロード
wget https://github.com/opencv/opencv_contrib/archive/3.4.4.zip
unzip opencv.zip
rm 3.4.4.zip
2.OpenCV-contribのダウンロード
wget https://github.com/opencv/opencv_contrib/archive/3.4.4.zip
unzip opencv.zip
rm 3.4.4.zip
(この状態でlsすると次の2つのフォルダが存在する)
opencv-3.4.4
3.build用のフォルダ作成(今回はbuild-python3とする)
mkdir build-python3
cd build-python3
4.ビルド。Python3、numpyのインストール先を指定しないと認識してくれない
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D INSTALL_PYTHON_EXAMPLES=ON -D OPENCV_EXTRA_MODULES_PATH=/test/opencv_contrib-3.4.4/modules -D BUILD_EXAMPLES=ON -D WITH_FFMPEG=ON -D PYTHON3_EXECUTABLE=/usr/local/bin/python3 -D BUILD_opencv_python3=ON -DPYTHON_DEFAULT_EXECUTABLE=/usr/local/bin/python3 -D PYTHON3_NUMPY_INCLUDE_DIRS=/usr/local/lib/python3.6/site-packages/numpy/core/include -D ENABLE_PRECOMPILED_HEADERS=OFF ..
make
make install
(改行してそれぞれの意味を記入したもの)
cmake -D CMAKE_BUILD_TYPE=RELEASE
-D CMAKE_INSTALL_PREFIX=/usr/local
-D INSTALL_PYTHON_EXAMPLES=ON :Pythonのコード例のインストール有無
-D OPENCV_EXTRA_MODULES_PATH=/test/opencv_contrib-3.4.4/modules :OpenCV-contribのパス
-D BUILD_EXAMPLES=ON
-D WITH_FFMPEG=ON
-D PYTHON3_EXECUTABLE=/usr/local/bin/python3 :Python3の場所
-D BUILD_opencv_python3=ON
-DPYTHON_DEFAULT_EXECUTABLE=/usr/local/bin/python3 :デフォルトの実行ファイルの場所?
-D PYTHON3_NUMPY_INCLUDE_DIRS=/usr/local/lib/python3.6/site-packages/numpy/core/include :Python3のNumpyのインストール場所
-D ENABLE_PRECOMPILED_HEADERS=OFF ..
注)この状態で作業フォルダは「/test/opencv-3.4.4/build-python3」となる
*共有ファイルの移動
1.共有ファイルの移動。共有ファイルである「cv2.so」、「cv2.cpython-36m-arm-linux-gnueabi.so」がそれぞれ次のフォルダに作成される。
/test/opencv-3.4.4/build-python3/lib/cv2.so
/test/opencv-3.4.4/build-python3/lib/python3/cv2.cpython-36m-arm-linux-gnueabi.so
そのため、それぞれをpythonのライブラリフォルダに移動させる。
2.Python2
cp /test/opencv-3.4.4/build-python3/lib/cv2.so /usr/lib/python2.7/site-packages/cv2.so
3.Python3。python2とファイル名を共通化させるため、「cv2.so」にリネームした後に移動
cp /test/opencv-3.4.4/build-python3/lib/python3/cv2.cpython-36m-arm-linux-gnueabi.so /test/opencv-3.4.4/build-python3/lib/python3/cv2.so
cp /test/opencv-3.4.4/build-python3/lib/python3/cv2.so /usr/local/lib/python3.6/site-packages
*動作テスト
cd /test
wget [適当な画像URL、ここではlena.jpgとする]
python3
import cv2
cv2.__version__
img = cv2.imread('lena.jpg')
img_gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
cv2.imwrite('lena_gray.jpg', img_gray)
以上の操作によってインストールされたOpenCVのバージョン、テストフォルダにグレースケールに変換された画像が出力される
参考)
*インストール後の動作テスト関連
Raspberry Pi B+にOpenCV-Python環境を構築する
https://qiita.com/jh3rox/items/be803f9171db8fe737de
*インストール関連
Python bindingのエラーを修正しながら仕組みを追う気の遠くなるような長い長い旅
https://qiita.com/peisuke/items/179094c9d1387788256e
Install OpenCV 3.0 and Python 3.4+ on OSX
https://www.pyimagesearch.com/2015/06/29/install-opencv-3-0-and-python-3-4-on-osx/
Ubuntu16.04へのOpenCV 3.3.0インストールメモ
https://qiita.com/nakasuke_/items/51664807bdd7794db0da