寝台急行はまなす

札幌駅 22:00発 増結12両編成 青森行き

ESP32を始めてみる AWS IoTにデータを飛ばす編

ということをやってので備忘録として思い出して書いておきます。

抜けている個所や説明が間違っていたらすみません。

適時公式ドキュメントとかで保管して頂きたく。

 

下の写真でスイッチを押したらDHT11センサーから取得した温湿度をESP32でAWS IoTに飛ばしてS3にデータを保存します。

 

 

AWSの設定

AWS IoTのコンソールを開きモノを作成します。

f:id:ken5owata:20171021184228p:plain

 

次に接続時に使う証明書を作成してダウンロードします。

f:id:ken5owata:20171021185207p:plain

f:id:ken5owata:20171021185244p:plain

ポリシーを作成して証明書をひもづけます。

f:id:ken5owata:20171021194624p:plain

f:id:ken5owata:20171021194703p:plain

 

作成したモノと証明書をひもづけます。

f:id:ken5owata:20171021190552p:plain

 

今回作成したモノのAPIエンドポイントのURLをコピっておきます。

f:id:ken5owata:20171021192104p:plain

 

最後にデータをS3に保存するルールを作成します。

ESP32というルールを作成してS3にメッセージを格納するというアクションを設定します。

ルールクエリの'ESP32/DHT11'がトピックの部分になります。

f:id:ken5owata:20171021195626p:plain

これでAWS側の準備は完了だったはずです。

 

Arduinoでスケッチ作成

必要な以下のライブラリをライブラリマネージャから入れます。

・ArduinoJson

・DHT sensor library

・Adafruit Unified Sensor

 

スケッチ例にあるWiFiClientSecureをもとにスケッチを作成していきます。

スケッチ例の11行目と12行目にWifiSSIDとパスワードをセットし、14行目にはコピっておいたAPIのエンドポイントを貼り付けます。

 

20行目のtest_root_caにダウンロードしたルート証明書の内容を貼り付けて置き換えます。

50行目のtest_client_keyにxxxxxxxxxx-certificate.pemの内容を貼り付け、

51行目のtest_client_certにxxxxxxxxxx--private.pem.keyの内容を貼り付けます。

 

最後に76行目と77行目のコメントアウトを除きます。

 

スイッチが押されてOFFを検知したらDHT11から読みだした温度と湿度をJSONにセットしてHTTPSに飛ばします。

最後にスケッチを貼り付けておくのでご笑覧ください。 

 

スケッチができたらESP32に書き込んで動作確認を行います。

まずはシャドウステータスの更新を行ってみます。

シャドウステータスの場合はURLが "/thing/作成したモノの名前/shadow"になります。

それではスイッチを押してみると...

f:id:ken5owata:20171021234903p:plain

f:id:ken5owata:20171021221146p:plain

 更新されました。

シャドウステータスが送信したJSONデータになっています。

 

次にURLをトピックのものに書き換えてデータがS3に保存されることを確認します。

トピックのURLは "/topics/ESP32/DHT11"になります。"/topics/"の後ろがルールクエリとなる仕組みのようです。

それではスイッチを押すと...

f:id:ken5owata:20171021234921p:plain

f:id:ken5owata:20171021234545p:plain

 

ちゃんとデータが保存されていました。

f:id:ken5owata:20171021234944p:plain

というわけでこんな感じでAWS IoTとESP32で遊ぶことができました。

今回は簡単にS3にデータ保存するだけでしたが、AWS lambdaでサーバーレス処理とかにもチャレンジしてみたいですね。

あと、HTTPSをMQTTにするとかも。

 

最後にスケッチを貼り付けておきます。

GitHub - satoken5/ESP32Sample: ESP32のサンプルスケッチ

gistf1bed342d0058e04fefcd897c1b0d00f

micropythonをはじめよう(ESP32編)

ESP32が国内発売されるようになり半年以上が立ちにわかにmicropythonが取り上げられるようになってきました。

以下の記事や今月号のトラ技でも記事が書かれています。 

 

makezine.jp

 

ESP32のファームウェアは夏ごろから公式サイトで公開され自分でビルドする必要もなくなり、今では書き込みツールでファームウェアを書くだけで手軽にmicropythonをスタートできるようになりました。

改めてファームウェアの書き込みと公式ドキュメントのチュートリアルをちょこっとやってみたいと思います。

 

※micropythonのファームウェアをESP32に書き込むことで技適の認証に抵触する可能性があります。あくまで自己責任でお願い致します。

 

ファームウェアの書き込み

何はともあれファームウェアを公式から落とします。

MicroPython - Python for microcontrollers

 

f:id:ken5owata:20171018230635p:plain

 

次に書き込みツールをインストールします。

GitHub - espressif/esptool: ESP8266 and ESP32 serial bootloader utility

# pip install esptool

 

Windowsの人はメーカのGUIツールでも構いません。

Tools | Espressif Systems

 

ツールを適時インストールしたら、ファームウェアを書き込みます。

esptoolの場合はこんな感じです。

# esptool.py --port COM4 --baud 460800 write_flash --flash_mode dio --flash_size=detect 0x1000 esp32-20171006-v1.9.2-276-ga9517c04.bin

 

f:id:ken5owata:20171018231914p:plain 

 

CLIGUIも0x1000にファームウェアを書き込みます。

ファームウェアに書き込みが正常に終了したら、teratermやscreenコマンドでシリアルポートにアクセスします。

micropythonのREPLが開きコードを入力→実行ができます。

 

f:id:ken5owata:20171018232720p:plain

 

チュートリアル

micropythonには公式ドキュメントがあります。

ESP32のドキュメントはないのですがほぼ同じのESP8266のものに沿ってチュートリアルを進めていきます。

 

MicroPython tutorial for ESP8266 — MicroPython 1.9.2 documentation

 

・Lチカ

>>> from machine import Pin
>>> p = Pin(4, Pin.OUT)

>>> p.value(1)
>>> p.value(0)

 

・ADC

>>> pin32 = Pin(32, Pin.IN)
>>> adc = machine.ADC(pin32)
>>> adc.read()

 

・ファイル操作

>>> f = open('data.txt', 'w')
>>> f.write('micropython')
11
>>> f.close()
>>>
>>> import os
>>> os.listdir()
['boot.py', 'data.txt']
>>>

>>> f = open('data.txt', 'r')
>>> f.read()
'micropython'
>>> f.close()
>>>

>>> os.remove('data.txt')
>>> os.listdir()
['boot.py']
>>>

 

・neopixel

>>> import machine
>>> import neopixel

>>> pin = machine.Pin(4, machine.Pin.OUT)
>>> np = neopixel.NeoPixel(pin, 20)
>>> np[0] = (255, 0, 0)
>>> np[1] = (0, 128, 0)
>>> np[2] = (0, 0, 64)
>>> np.write()

 

 

wifi接続

>>> import network
>>> sta_if = network.WLAN(network.STA_IF)

>>> sta_if.active(True)

>>> sta_if.scan()

>>> sta_if.connect('ssid', 'password')

>>> sta_if.ifconfig()

 

・ソケット

>>> import socket
>>> addr_info = socket.getaddrinfo("towel.blinkenlights.nl", 23)
>>> addr = addr_info[0][-1]
>>> s = socket.socket()
>>> s.connect(addr)
>>> while True:

...   data = s.recv(500)
...   print(str(data, 'utf8'), end='')

 

f:id:ken5owata:20171021000904p:plain

 

スターウォーズのAAが流れ続けるのでCtl+Cで止めましょう。

 

さてここまではREPLでコードを実行してきました。

自作したプログラム(pyファイル)を実行する場合はツールでファイルを転送します。

以下のコマンドでツールを入れます。

# pip install adafruit-ampy

 

adafruitが出しているこのampyツールにはget、ls、put、rmなどのコマンドがありポートを指定してファイルを転送したり削除したりします。 

ダウンロードしたファームウェアはboot.pyファイルしかない状態です。

boot.pyファイルは起動時に1回のみ実行されるファイルです。

 

>>> import os
>>> os.listdir()
['boot.py']
>>>

 

永続的にプログラムを実行させる場合はmain.pyを作成してampyツールで送り込みます。

boot.pyとmain.pyはArduinoでいうところのsetupとloop関数というわけですね。

 

# ampy -p COM4 ls

# ampy -p COM4 put main.py

 

以上、簡単な紹介でした。

ぜひ皆さんもmicropythonで遊んでみましょう!

  

CentOS7にZabbixを入れる

dockerで触ってましたが、CentOS7の仮想マシンに入れました。

 

qiita.com

 

・環境

# cat /etc/redhat-release
CentOS Linux release 7.3.1611 (Core)

 

rpmを追加 

# curl -O http://repo.zabbix.com/zabbix/3.2/rhel/7/x86_64/zabbix-release-3.2-1.el7.noarch.rpm

# rpm -ivh zabbix-release-3.2-1.el7.noarch.rpm

 

・Zabbixをインストール

# yum install -y zabbix-server-mysql zabbix-web-mysql zabbix-web-japanese zabbix-agent

# yum install -y mariadb-server

 

・DBの設定

以下を/etc/my.cnf.d/server.cnfに追加

[mysqld]
character-set-server = utf8
collation-server     = utf8_bin
skip-character-set-client-handshake
innodb_file_per_table

 

DBを起動させてDBを作成。パスワードをセット。

# systemctl start mariadb

# mysql -uroot

MariaDB [(none)]> create database zabbix;

MariaDB [(none)]> grant all privileges on zabbix.* to zabbix@localhost identified by 'password' ;

MariaDB [(none)]> exit

 

初期データを作成します。

# zcat /usr/share/doc/zabbix-server-mysql-3.2.7/create.sql.gz | mysql -uroot zabbix

 

/etc/zabbix/zabbix_server.confにDBのパスワードをセットします。

DBPassword=password

 

/etc/httpd/conf.d/zabbix.confにタイムゾーンをセットします。

php_value date.timezone Asia/Tokyo

 

・サービスを起動

# systemctl start zabbix-server
# systemctl start zabbix-agent
# systemctl start httpd
# systemctl enable zabbix-server
# systemctl enable zabbix-agent
# systemctl enable httpd

 

selinux

ところがzabbix-serverが起動せず、selinuxを切ると起動しました。

# setenforce 0

# systemctl status zabbix-server
● zabbix-server.service - Zabbix Server
   Loaded: loaded (/usr/lib/systemd/system/zabbix-server.service; disabled; vendor preset: disabled)
   Active: active (running)

 

・firewall設定

webにアクセスできず、firewallの設定を忘れていました。。

# firewall-cmd --add-port=10051/tcp --zone=public --permanent
# firewall-cmd --add-service=http --zone=public --permanent
# systemctl restart firewalld

 

・ログイン

http://ZabbixサーバーのIPアドレス/zabbix/ にアクセスして初期設定を順次入力していきます。

入力後、Admin/zabbixでログイン。

f:id:ken5owata:20170803214119p:plain

 

完了しました。

dockerでZabbixを触ってみる

お仕事でZabbix触るっぽいんでdockerで触ってみたお。

ほぼチュートリアルをなぞっただけ。

 

Dockerized Zabbix - Zabbix.org

 

dev.classmethod.jp

 

環境はUbuntu16.04です

 

・imageの取得

必要なdockerimageをpullしてきます。

 

$ sudo docker pull monitoringartist/zabbix-db-mariadb

$ sudo docker pull monitoringartist/zabbix-xxl

 

・DB用のコンテナ起動

 $ sudo docker run \
    -d \
    --name zabbix-db \
    --env="MARIADB_USER=zabbix" \
    --env="MARIADB_PASS=my_password" \
    monitoringartist/zabbix-db-mariadb

 

・Zabbixサーバのコンテナを起動

$ sudo docker run \
    -d \
    --name zabbix \
    -p 8080:80 \
    -p 10051:10051 \
    -v /etc/localtime:/etc/localtime:ro \
    --link zabbix-db:zabbix.db \
    --env="ZS_DBHost=zabbix.db" \
    --env="ZS_DBUser=zabbix" \
    --env="ZS_DBPassword=my_password" \
    --env="XXL_zapix=true" \
    --env="XXL_grapher=true" \
    monitoringartist/zabbix-xxl:latest

 

・ログイン

ブラウザでアクセスし

f:id:ken5owata:20170418074730p:plain

 

admin、zabbixでログイン

f:id:ken5owata:20170418074756p:plain

 

おしまい。

Intel NUCで始める自宅ESXi6.5

というわけでIntel NUCを買いました。

第6世代のNUC6i3SYHです。

 

f:id:ken5owata:20170702125218j:image

 

お仕事でWindowsサーバを触れることも多くなりAWSでもいいんだけど、手元にあったほうが何かと便利だしESXiの勉強にもなるかなと思う次第でありまして。

購入代金はなんとかボーナスでまかなえるはず。。。。(震え声

 

秋葉原ツクモに行って必要なものを購入、取説みて組み立てます。

thinkpadの分解とかよりはるかにラクチンであっという間です。

 

f:id:ken5owata:20170702125858j:image

 

組み立てたらキーボードとHDMI-VGAの変換ケーブルをモニターに接続して電源ON、BIOS画面へ入ります。

ちゃんとメモリとSSDが認識しているのを確認します。

メモリとSSDの認識を確認したらダウンロードしたVMware-VMvisor-Installer-6.5.0-4564106.x86_64.iso をUSBメモリに書き込ませてインストールしました。

特にエラーもなくすんなりとインストールできました。

f:id:ken5owata:20170730214853p:plain

 

インストール後、以下の2つを対応しました。

1.データストアのアクセスが遅い

isoのアップロード遅くね?OSのインストール遅くね?とか思ってたら、以下のページと同じ現象が起きていたようなので、SSHログインして以下コマンドを実行しました。

[root@localhost:~] esxcli system module set -e=false -m=vmw_ahci

 

blog.kurokobo.com

 

2.NICを追加

NUCはデフォルト1ポートしかNICがありません。以下URLそのままにUSBのLANアダプタを買ってきてNICを追加しました。

http://blog.techlab-xe.net/archives/5227

USB 3.0 Ethernet Adapter (NIC) driver for ESXi 6.5 | virtuallyGhetto

↑のURLを参考に以下コマンドを実行した後、再起動すると追加したNICが認識されました。

[root@localhost:~] esxcli software vib install -v /vghetto-ax88179-esxi65.vib -f
Installation Result
   Message: Operation finished successfully.
   Reboot Required: false
   VIBs Installed: virtuallyGhetto_bootbank_vghetto-ax88179-esxi65_6.0.0-1.0.0
   VIBs Removed:
   VIBs Skipped:
[root@localhost:~]

[root@localhost:~] esxcli system module set -m=vmkusb -e=FALSE

 

f:id:ken5owata:20170730213930p:plain

 

というわけでこれから楽しいESXiライフを送ろうと思います。(`・ω・´)

f:id:ken5owata:20170730215842p:plain

 

raspberry pi 3にTensorFlowを入れて画像認識させる

qiita.com

 

こいつの続き、ラズパイ3にTensorFlowを入れるところから。

これでわしもきゅうり判別機を作れるだろうかw 。

 

・TensorFlowを入れる 

GitHub - samjabrahams/tensorflow-on-raspberry-pi: TensorFlow for Raspberry Pi

pi@raspberrypi:~ $ wget https://github.com/samjabrahams/tensorflow-on-raspberry-pi/releases/download/v1.1.0/tensorflow-1.1.0-cp27-none-linux_armv7l.whl

pi@raspberrypi:~ $ sudo pip install tensorflow-1.1.0-cp27-none-linux_armv7l.whl

pi@raspberrypi:~ $ sudo pip uninstall mock

pi@raspberrypi:~ $ sudo pip install mock

 

・確認

pi@raspberrypi:~ $ python
Python 2.7.9 (default, Sep 17 2016, 20:26:04)
[GCC 4.9.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import tensorflow as tf
>>> hello = tf.constant('Hello, TensorFlow!')
>>> sess = tf.Session()
>>> print sess.run(hello)
Hello, TensorFlow!
>>> a = tf.constant(10)
>>> b = tf.constant(32)
>>> print sess.run(a + b)
42
>>>

 

・kerasを入れる(かなり時間かかった。。)

pi@raspberrypi:~ $ sudo pip install keras

 

・学習済みのモデルを持ってくる

pi@raspberrypi:~ $ git clone https://github.com/fchollet/deep-learning-models

 

・実行 → 怒られた

pi@raspberrypi:~/deep-learning-models $ python inception_v3.py
Using TensorFlow backend.
Downloading data from https://github.com/fchollet/deep-learning-models/releases/download/v0.5/inception_v3_weights_tf_dim_ordering_tf_kernels.h5
Traceback (most recent call last):
  File "inception_v3.py", line 399, in <module>
    model = InceptionV3(include_top=True, weights='imagenet')
  File "inception_v3.py", line 385, in InceptionV3
    model.load_weights(weights_path)
  File "/usr/local/lib/python2.7/dist-packages/keras/engine/topology.py", line 2531, in load_weights
    raise ImportError('`load_weights` requires h5py.')
ImportError: `load_weights` requires h5py.
pi@raspberrypi:~/deep-learning-models $

 

・h5pyっていうのがいるの? → pipで入れる → 怒られた

pi@raspberrypi:~ $ sudo pip install h5py

※中略

In file included from /tmp/pip-build-1n231R/h5py/h5py/defs.c:470:0:
    /tmp/pip-build-1n231R/h5py/h5py/api_compat.h:27:18: fatal error: hdf5.h: No such file or directory
     #include "hdf5.h"
                      ^
    compilation terminated.
    error: command 'arm-linux-gnueabihf-gcc' failed with exit status 1

 

・必要なものをいれる

pi@raspberrypi:~ $ sudo apt-get install -y libhdf5-dev

 

・とりあえずh5pyっていうのが入った

pi@raspberrypi:~ $ sudo pip install h5py
Collecting h5py
  Using cached h5py-2.7.0.tar.gz
Requirement already satisfied: numpy>=1.7 in /usr/local/lib/python2.7/dist-packages (from h5py)
Requirement already satisfied: six in /usr/local/lib/python2.7/dist-packages (from h5py)
Building wheels for collected packages: h5py
  Running setup.py bdist_wheel for h5py ... done
  Stored in directory: /root/.cache/pip/wheels/3e/ff/67/d04f183c668c251c1bc737224584dec995715d486178f77ede
Successfully built h5py
Installing collected packages: h5py
Successfully installed h5py-2.7.0
pi@raspberrypi:~ $

 

・これで行けるか? → 失敗。。。

pi@raspberrypi:~/deep-learning-models $ python inception_v3.py
Using TensorFlow backend.
Traceback (most recent call last):
  File "inception_v3.py", line 402, in <module>
    img = image.load_img(img_path, target_size=(299, 299))
  File "/usr/local/lib/python2.7/dist-packages/keras/preprocessing/image.py", line 318, in load_img
    raise ImportError('Could not import PIL.Image. '
ImportError: Could not import PIL.Image. The use of `array_to_img` requires PIL.
pi@raspberrypi:~/deep-learning-models $

 

・これがいる模様 → pillow

pi@raspberrypi:~/deep-learning-models $ sudo pip install pillow

 

・必要なもの入ったんじゃね?

pi@raspberrypi:~/deep-learning-models $ python
Python 2.7.9 (default, Sep 17 2016, 20:26:04)
[GCC 4.9.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import PIL
>>>

 

・来たーー!!???

pi@raspberrypi:~/deep-learning-models $ python inception_v3.py
Using TensorFlow backend.
Downloading data from https://s3.amazonaws.com/deep-learning-models/image-models/imagenet_class_index.json
Predicted: (u'n02504458', u'African_elephant', 0.58458394), (u'n01871265', u'tusker', 0.35385633), (u'n02504013', u'Indian_elephant', 0.01978549), (u'n02134084', u'ice_bear', 0.0005529598), (u'n02437312', u'Arabian_camel', 0.00053362496)
pi@raspberrypi:~/deep-learning-models $

 

※この画像

f:id:ken5owata:20170612223613j:plain

 

アフリカゾウ、あってそう!

 

pi@raspberrypi:~/deep-learning-models $ time python inception_v3.py apple.jpg
Using TensorFlow backend.
Predicted: (u'n07742313', u'Granny_Smith', 0.41690961), (u'n07720875', u'bell_pepper', 0.056339104), (u'n07745940', u'strawberry', 0.037945356), (u'n07747607', u'orange', 0.031627435), (u'n07768694', u'pomegranate', 0.027530219)

pi@raspberrypi:~/deep-learning-models $

 

なるほどりんごですか、色はちがうけど合ってるね。

※この画像

 

pi@raspberrypi:~/deep-learning-models $ time python inception_v3.py fi004.jpg
Using TensorFlow backend.
Predicted: (u'n07684084', u'French_loaf', 0.318775), (u'n07716358', u'zucchini', 0.17547932), (u'n07579787', u'plate', 0.1427407), (u'n07860988', u'dough', 0.07184507), (u'n07871810', u'meat_loaf', 0.067287661)

pi@raspberrypi:~/deep-learning-models $

 

んーフランスパンですかー??

※この画像

 

pi@raspberrypi:~/deep-learning-models $ python inception_v3.py
Using TensorFlow backend.
Predicted: (u'n04350905', u'suit', 0.14072829), (u'n03763968', u'military_uniform', 0.1166545), (u'n02916936', u'bulletproof_vest', 0.068024598), (u'n02883205', u'bow_tie', 0.037428539), (u'n04591157', u'Windsor_tie', 0.02336538)
pi@raspberrypi:~/deep-learning-models $

 

スーツ、軍服、防弾チョッキ、蝶ネクタイ!??!!!

 

※この画像

f:id:ken5owata:20170612223841j:plain

 

あっ(察し)。

raspberry pi 3にOpenCVをインスコ

qiita.com

 

こんどの勉強会でやるのを予習。

まずOpenCVをraspiに入れるとこをやてみよ。

 

・使ったもの

 2017-04-10-raspbian-jessie-lite.img

 →起動させてからsshファイルをboot領域に入れるの忘れるよねー

 

とりあえず以下の手順をなぞる。

 

www.pyimagesearch.com

 

日本語で解説されているところ、ありがたい

tomosoft.jp

 

・必要なものを入れる

pi@raspberrypi:~ $ sudo apt-get update

pi@raspberrypi:~ $ sudo apt-get upgrade

pi@raspberrypi:~ $ sudo apt-get install build-essential cmake pkg-config

pi@raspberrypi:~ $ sudo apt-get install libjpeg-dev libtiff5-dev libjasper-dev libpng12-dev

pi@raspberrypi:~ $ sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev

pi@raspberrypi:~ $ sudo apt-get install libxvidcore-dev libx264-dev

pi@raspberrypi:~ $ sudo apt-get install libgtk2.0-dev

pi@raspberrypi:~ $ sudo apt-get install libatlas-base-dev gfortran

pi@raspberrypi:~ $ sudo apt-get install python2.7-dev

 

OpenCVを入れる。

 3.2.0が最新だったので、そっちにしました。

 

pi@raspberrypi:~ $ wget -O opencv.zip https://github.com/Itseez/opencv/archive/3.2.0.zip

pi@raspberrypi:~ $ wget -O opencv_contrib.zip https://github.com/Itseez/opencv_contrib/archive/3.2.0.zip

※zipを解凍(忘れ)

pi@raspberrypi:~ $ wget https://bootstrap.pypa.io/get-pip.py

pi@raspberrypi:~ $ sudo python get-pip.py

 

・numpyを入れる(けっこうかかる)

pi@raspberrypi:~ $ sudo pip install numpy

 

pi@raspberrypi:~ $ cd opencv-3.2.0/

pi@raspberrypi:~/opencv-3.2.0 $ mkdir build

pi@raspberrypi:~/opencv-3.2.0 $ cd build/

pi@raspberrypi:~/opencv-3.2.0/build $ cmake -D CMAKE_BUILD_TYPE=RELEASE \
> -D CMAKE_INSTALL_PREFIX=/usr/local \
> -D INSTALL_PYTHON_EXAMPLES=ON \
> -D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib-3.2.0/modules/ \
> -D BUILD_EXAMPLES=ON ..

 

 Python2のとこがOKそうなのを確認

 

--   Python 2:
--     Interpreter:                 /usr/bin/python2.7 (ver 2.7.9)
--     Libraries:                   /usr/lib/arm-linux-gnueabihf/libpython2.7.so (ver 2.7.9)
--     numpy:                       /usr/local/lib/python2.7/dist-packages/numpy/core/include (ver 1.13.0)
--     packages path:               lib/python2.7/dist-packages

 

OpenCVコンパイル(2時間かかる)

pi@raspberrypi:~/opencv-3.2.0/build $ time make -j4

(中略)

real    135m55.136s
user    421m28.900s
sys     11m5.550s

 

OpenCVを入れる。

pi@raspberrypi:~/opencv-3.2.0/build $ sudo make install

pi@raspberrypi:~/opencv-3.2.0/build $ sudo ldconfig

 

・確認

 無事入ったようです。

pi@raspberrypi:~ $ python
Python 2.7.9 (default, Sep 17 2016, 20:26:04)
[GCC 4.9.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import cv2
>>> cv2.__version__
'3.2.0'
>>>

 

・サンプルプログラム

 ここのをお借りしました。

 OpenCV 3をPython 2.7言語で顔認識プログラム | TomoSoft

 実行

pi@raspberrypi:~/sample $ python face.py
inimg/lena.jpg
pi@raspberrypi:~/sample $

 

ぬおー!顔が四角で覆われました!

 

f:id:ken5owata:20170611212810j:plain