2018年3月14日水曜日

OpenCVのビルド整理

ここらで、OpenCV buildの整理。いままで、ザクっとやっていたので、、、

1.必須モジュール
build-essential cmake pkg-config cmake-qt-gui mesa-utils libgl1-mesa-dri
cmake-qt-gui は、UIでパラメータの設定をしなければ不要

2.基本演算系
libatlas-base-dev gfortran libeigen3-dev

3.画像、動画モジュール
libjpeg-dev libtiff5-dev  libpng12-dev libjasper-dev
libavcodec-dev libavformat-dev libswscale-dev libv4l-dev libxvidcore-dev libx264-dev libv4l-dev

4.OpenCVのGUIモジュール
libgtk2.0-dev libgtk-3-dev

5.3Dモデル表示モジュール
libvtk5-dev libvtk5-qt4-dev  python-vtk tcl-vtk 
libqt4-core libqtgui4 libqt4-test libqt4-opengl-dev (Qt系が必要なら)

6.python
python3-dev     2系は使わないので、、、

7.深層学習
libprotobuf-dev protobuf-compiler

8.ドキュメント系
sphinx-common doxygen
でも、インストールしない

9.PlantUML
http://plantuml.com/download からダウンロードして、リネームかシンボリックリンク
cd /usr/share/java  にコピーする
sudo ln -s plantuml.8048.jar plantuml.jar


10. cmake 設定
contrib不要の場合
cmake -D CMAKE_BUILD_TYPE=RELEASE \
    -D CMAKE_INSTALL_PREFIX=/usr/local \
    -D INSTALL_PYTHON_EXAMPLES=ON \
    -D PLANTUML_JAR=/usr/share/java/plantuml.jar \
    -D ENABLE_NEON:BOOL=ON \
    -D WITH_TBB=ON -D BUILD_TBB=ON \
    -D WITH_QT=ON -D WITH_OPENGL=ON \
    -D BUILD_EXAMPLES=ON ..

cmake -D CMAKE_BUILD_TYPE=RELEASE \
    -D CMAKE_INSTALL_PREFIX=/usr/local \
    -D INSTALL_PYTHON_EXAMPLES=OFF \
    -D PLANTUML_JAR=/usr/share/java/plantuml.jar \
    -D ENABLE_NEON:BOOL=ON \
    -D WITH_TBB=ON -D BUILD_TBB=ON \
    -D WITH_QT=OFF -D WITH_OPENGL=OFF \
    -D BUILD_EXAMPLES=ON ..


contribを含める場合
cmake -D CMAKE_BUILD_TYPE=RELEASE \
    -D CMAKE_INSTALL_PREFIX=/usr/local \
    -D INSTALL_PYTHON_EXAMPLES=ON \
    -D PLANTUML_JAR=/usr/share/java/plantuml.jar \
    -D ENABLE_NEON=ON \
    -D WITH_TBB=ON -D BUILD_TBB=ON \
    -D WITH_QT=ON -D WITH_OPENGL=ON \
    -D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib-3.4.1/modules \
    -D BUILD_EXAMPLES=ON ..

一発shellはこれ(^^)

#! /bin/bash

date;

if [[ `lsb_release -d` =~ .*Raspbian.* ]]
then
        echo "";
        read -p " Continue installing OpenCV (y/n) ? " CONTINUE
        if [[ "$CONTINUE" == "y" || "$CONTINUE" == "Y" ]]; then
                echo "";
                echo "Installing OpenCV";
                echo "";
#                sudo apt-get update -y && sudo apt-get upgrade -y
#                sudo apt-get install -y build-essential cmake pkg-config
#                sudo apt-get install -y libjpeg-dev libtiff5-dev libjasper-dev libpng12-dev
#                sudo apt-get install -y libavcodec-dev libavformat-dev libswscale-dev libv4l-dev
#                sudo apt-get install -y libxvidcore-dev libx264-dev
#                sudo apt-get install -y libgtk2.0-dev libgtk-3-dev
#                sudo apt-get install -y libatlas-base-dev gfortran
#                sudo apt-get install -y python2.7-dev python3-dev

                  sudo apt-get install -y build-essential cmake pkg-config cmake-qt-gui mesa-utils libgl1-mesa-dri
                  sudo apt-get install -y libatlas-base-dev gfortran libeigen3-dev
                  sudo apt-get install -y libjpeg-dev libtiff5-dev  libpng12-dev libjasper-dev
                  sudo apt-get install -y libavcodec-dev libavformat-dev libswscale-dev libv4l-dev libxvidcore-dev libx264-dev libv4l-dev
                  sudo apt-get install -y libgtk2.0-dev libgtk-3-dev
                  sudo apt-get install -y libvtk5-dev libvtk5-qt4-dev  python-vtk tcl-vtk
                  sudo apt-get install -y libqt4-core libqtgui4 libqt4-test libqt4-opengl-dev
                  sudo apt-get install -y python3-dev
                  sudo apt-get install python-dev python-pip
                  sudo apt-get install -y libprotobuf-dev protobuf-compiler
                  sudo apt-get install -y sphinx-common doxygen

                cd ~
                wget -O opencv.zip https://github.com/opencv/opencv/archive/3.4.1.zip
                unzip opencv.zip
                wget -O opencv_contrib.zip https://github.com/opencv/opencv_contrib/archive/master.zip
                unzip opencv_contrib.zip
                                mv ~/opencv_contrib-master ~/opencv_contrib-3.4.1
                cd ~/opencv-3.4.1/
                mkdir build
                cd build

#                cmake -D CMAKE_BUILD_TYPE=RELEASE \
#                      -D CMAKE_INSTALL_PREFIX=/usr/local \
#                      -D INSTALL_PYTHON_EXAMPLES=OFF \
#                      -D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib-3.4.0/modules \
#                      -D BUILD_EXAMPLES=OFF ..

                 cmake -D CMAKE_BUILD_TYPE=RELEASE \
                        -D CMAKE_INSTALL_PREFIX=/usr/local \
                        -D INSTALL_PYTHON_EXAMPLES=ON \
                        -D PLANTUML_JAR=/usr/share/java/plantuml.jar \
                        -D ENABLE_NEON=ON \
                        -D WITH_TBB=ON -D BUILD_TBB=ON \
                        -D WITH_QT=ON -D WITH_OPENGL=ON \
                        -D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib-3.4.1/modules \
                        -D BUILD_EXAMPLES=ON ..

                make
                sudo make install
                sudo ldconfig
        else
                echo "";
                echo "Skipping OpenCV installation";
                echo "";
        fi
else
        echo "Installing opencv python for non-Raspbian";
        sudo -H pip3 install opencv-python
        sudo -H pip3 install opencv-contrib-python
fi
date;

2018年3月12日月曜日

Raspberry Pi /tmpをメモリー上に確保する

SDカードは、各込み速度が遅くて, いろいろ処理速度を高めようとすると
「データ量の見積もりが可能」であれば
/tmpをメモリー上に取る事が有効なはず
古典的な手法だけど、その手順

(1) メモリー上に/tmpを設定、最後に追記する
sudo vi /etc/fstab

tmpfs     /tmp            tmpfs    defaults,size=84m,noatime,mode=1777      0       0
tmpfs     /var/tmp        tmpfs    defaults,size=16m,noatime,mode=1777      0       0
tmpfs     /var/log        tmpfs    defaults,size=32m,noatime,mode=0755      0       0

(2) /etc/rsyslog.confの編集

sudo vi /etc/rsyslog.conf


(3) /etc/rc.local

sudo vi /etc/rc.local
cat /etc/rc.local

# Print the IP address
_IP=$(hostname -I) || true
if [ "$_IP" ]; then
  printf "My IP address is %s\n" "$_IP"
fi


# create folder on ram disk

mkdir -p /var/log/ConsoleKit
mkdir -p /var/log/samba
mkdir -p /var/log/fsck
mkdir -p /var/log/apt
mkdir -p /var/log/ntpstats
mkdir -p /tmp/motion
chown root.ntp /var/log/ntpstats
chown root.adm /var/log/samba
touch /var/log/lastlog
touch /var/log/wtmp
touch /var/log/btmp
chown root.utmp /var/log/lastlog
chown root.utmp /var/log/wtmp
chown root.utmp /var/log/btmp

exit 0

(4) sudo reboot

(5) 確認   ホスト名が違うのは、ご愛敬(^^)/
before


after

Peace!!

2018年3月1日木曜日

Setup PiTFT3.5 on Stretch

ロボットのUIは、タッチパネルがなんといってもダントツに良い。
紆余曲折があり、Adafruit PiTFT3.5を一点だけ除けば満足して使っている。
一番の良いのは、タッチパネルで使っているGPIO以外が使える事。
だから、I2Cなどのセンサが活用できる。これは、以外に重要なポイントなんです。

一点だけ除くと書いたのは、Easy InstallのモジュールがJessieって事。
ところが、、、
なんと、Device Treeの導入でStretchでも動くとな、、、
「感謝の記事」は、こちら、、、

https://qiita.com/hishi/items/bdd630666277e4f8162a

おかげで、こんな感じで使えるようになりました。



注意点(1)
この説明と違うの所は、僕が使っているのは3.5inchなので/boot/config.txtのこの設定。

dtoverlay=pitft35-resistive,rotate=90,speed=62000000,fps=25

画面も90度回転して電源が下になり、これも良し!
満足満足、、、
この数値の説明は、下記Adafruitページの中ほど、、、

https://learn.adafruit.com/adafruit-pitft-28-inch-resistive-touchscreen-display-raspberry-pi/help-faq

注意点(2)
sudo rmmod stmpe_ts; sudo modprobe stmpe_ts

のあとは、sudo rebootが必要

ただ、ちょっと不明な点が多くて、安定しないかも、、、

Peace!!