openCVのGaussianBlurで画像をぼやけさせる
opencvで以下のmballの画像をぼやけさせます
method
cv2.GaussianBlur(img_src, average_square, sigma_x)
試してみた
import cv2 # read image file img = cv2.imread("mball.jpg") # blur blur_img = cv2.GaussianBlur(img, (25, 25), 0) # write image file cv2.imwrite('blur.jpg', blur_img)
出来た画像がこちら
ちゃんとぼやけた画像にすることが出来た!
ちなみに色々値を変えると
cv2.GaussianBlur(img, (25, 25), 1)
ぼやけ具合がかなり減った
cv2.GaussianBlur(img, (5, 5), 0)
こちらも同じくぼやけ具合がかなり減った
cv2.GaussianBlur(img, (1, 1), 0)
こちらはほとんど元画像と変わらない
raspberryPiにinfluxdb1.2をinstallする
以前v1.0.2のinstall方法を書きましたが、今回は最新版のinfluxdb1.2をraspberryPiにインストールする方法です。
必要であれば前のパッケージは以下のコマンドで削除しておきましょう
$ sudo dpkg --purge influxdb
手順
repositoryの設定
$ sudo apt-get update $ sudo apt-get install apt-transport-https $ curl -sL https://repos.influxdata.com/influxdb.key | sudo apt-key add - $ source /etc/os-release $ test $VERSION_ID = "7" && echo "deb https://repos.influxdata.com/debian wheezy stable" | sudo tee /etc/apt/sources.list.d/influxdb.list $ test $VERSION_ID = "8" && echo "deb https://repos.influxdata.com/debian jessie stable" | sudo tee /etc/apt/sources.list.d/influxdb.list $ sudo apt-get update
install influxdb
$ sudo apt-get install influxdb
influxdb 起動
$ sudo service influxdb start
確認
### プロセス確認 $ ps aux | grep influx influxdb 14488 0.3 2.1 800724 18936 ? Ssl 12:55 0:07 /usr/bin/influxd -config /etc/influxdb/influxdb.conf pi 14569 0.0 0.2 4280 1852 pts/0 S+ 13:31 0:00 grep influx ### port確認 $ ss -lntp | grep 808 LISTEN 0 128 :::8086 :::* LISTEN 0 128 :::8088 :::* ### pingチェック $ curl -sl -I http://localhost:8086/ping HTTP/1.1 204 No Content Content-Type: application/json Request-Id: 93e1c7d3-edb7-11e6-800a-000000000000 X-Influxdb-Version: 1.2.0 Date: Wed, 08 Feb 2017 04:32:19 GMT ### queryチェック $ curl http://localhost:8086/query?pretty=true --data-urlencode "q=SHOW DATABASES" { "results": [ { "statement_id": 0, "series": [ { "name": "databases", "columns": [ "name" ], "values": [ [ "_internal" ] ] } ] } ] }
※ちなみに今までport8083で立ち上がっていたweb interfaceは廃止されたようです
InfluxData | Documentation | Web Admin Interface
raspberryPiにgvmでGoをインストールする方法
gvmとはgo version managerで、文字通りgo のvesionマネジメントシステム
GitHub - moovweb/gvm: Go Version Manager
rvmに影響を受けているらしく、似たようなコマンドで使用することが出来る
install library
$ sudo apt-get install curl git mercurial make binutils bison gcc build-essential
install gvm
### install $ bash < <(curl -s -S -L https://raw.githubusercontent.com/moovweb/gvm/master/binscripts/gvm-installer) Cloning from https://github.com/moovweb/gvm.git to /home/pi/.gvm No existing Go versions detected Installed GVM v1.0.22 Please restart your terminal session or to get started right away run `source /home/pi/.gvm/scripts/gvm` $ source /home/pi/.gvm/scripts/gvm ### confirm $ gvm help Usage: gvm [command] Description: GVM is the Go Version Manager Commands: version - print the gvm version number get - gets the latest code (for debugging) use - select a go version to use (--default to set permanently) diff - view changes to Go root help - display this usage text implode - completely remove gvm install - install go versions uninstall - uninstall go versions cross - install go cross compilers linkthis - link this directory into GOPATH list - list installed go versions listall - list available versions alias - manage go version aliases pkgset - manage go packages sets pkgenv - edit the environment for a package set $ gvm version Go Version Manager v1.0.22 installed at /home/pi/.gvm
install Go
gvmは全ての基点に1.4を利用しているようで、他のversionを利用するつもりでもまずは1.4をinstallしなければならない
install go1.4
$ gvm install go1.4 Installing go1.4... * Compiling... go1.4 successfully installed! $ gvm list gvm gos (installed) go1.4 $ gvm use go1.4 Now using version go1.4 $ gvm list gvm gos (installed) => go1.4
install go1.5
他のversionのinstallの確認として、stableの最新版である1.7.5をinstallしてみる
### install $ echo $GOROOT /home/pi/.gvm/gos/go1.4 $ export GOROOT_BOOTSTRAP=$GOROOT $ gvm install go1.7.5 Installing go1.7.5... * Compiling... go1.7.5 successfully installed! $ gvm use go1.7.5 --default Now using version go1.7.5 $ gvm list gvm gos (installed) go1.4 => go1.7.5 ### confirm $ go version go version go1.7.5 linux/arm
raspberryPi にnoipでDDNSの設定をする方法
raspberryPi3 jessieにnoipでDDNSの設定をする方法です。
no-ipの登録
DDNSサービスを提供している会社は色々ありますが、今回は調べていて割りと名前をよく目にするno-ipを利用することにしました
Free Dynamic DNS - Managed DNS - Managed Email - Domain Registration - No-IP
ユーザ登録
sign upを選ぶと以下のような画面が出てくるので、情報を入力します。
hostnameは後から変更できるので適当でも構いません。
入力したメールアドレスに確認メールが来るので、そこからログインします。
ログインすると以下のようなGUIの管理画面が表示されます。
hostname登録
画面の中段あたりのQuick Addというパネルから任意のhostnameを入力し、Add Hostnameボタンをクリックすることでhostnameの登録ができます
これで登録は完了です。次は実際にサーバで利用するための設定を行います。
noip DUCの設定
DUCとはDynamic Domain Update Clientの略らしいです(それだとDDUCになりそうだけど)
以下の設定はraspberryPi側で行います。
### clientのダウンロード $ wget http://www.noip.com/client/linux/noip-duc-linux.tar.gz $ sudo tar zxvf noip-duc-linux.tar.gz $ cd noip-2.1.9-1/ ### clientのインストール $ sudo make $ sudo make install if [ ! -d /usr/local/bin ]; then mkdir -p /usr/local/bin;fi if [ ! -d /usr/local/etc ]; then mkdir -p /usr/local/etc;fi cp noip2 /usr/local/bin/noip2 /usr/local/bin/noip2 -C -c /tmp/no-ip2.conf Auto configuration for Linux client of no-ip.com. Please enter the login/email string for no-ip.com # => no-ipに登録したユーザ名を入力します Please enter the password for user '*****' # => 同じく登録したパスワードを入力します Only one host [foobar.ddns.net] is registered to this account. It will be used. Please enter an update interval:[30] # => 何分毎に設定を確認するかを入力します Do you wish to run something at successful update?[N] (y/N) n New configuration file '/tmp/no-ip2.conf' created. mv /tmp/no-ip2.conf /usr/local/etc/no-ip2.conf ### 自動起動の設定 $ sudo cp debian.noip2.sh /etc/init.d/noip2 $ sudo vi /etc/rc.lcal # 以下の1行を追加します /etc/init.d/noip2 start ### 設定 $ sudo /etc/init.d/noip2 stop $ sudo /usr/local/bin/noip2 -C # 再度設定 $ sudo /etc/init.d/noip2 start # 起動 ### 確認 $ sudo /usr/local/bin/noip2 -S
これで30分毎および起動時にIPを確認して、IPが変わっている場合には自動でno-ipにリクエストを投げてDNS情報を変更してくれるようになりました
raspberryPiにinfluxdbとgrafanaをインストールする
ラズベリーパイにinfluxdbをインストールして、データをgrafanaでvisualization化する方法です。
Install influxdb
1. install influxdb
$ wget http://ftp.us.debian.org/debian/pool/main/i/influxdb/influxdb_1.0.2+dfsg1-1_armhf.deb $ sudo dpkg -i influxdb_1.0.2+dfsg1-1_armhf.deb Selecting previously unselected package influxdb. (Reading database ... 133808 files and directories currently installed.) Preparing to unpack influxdb_1.0.2+dfsg1-1_armhf.deb ... Unpacking influxdb (1.0.2+dfsg1-1) ... Setting up influxdb (1.0.2+dfsg1-1) ... Adding system user 'influxdb' (UID 113) ... Adding new user 'influxdb' (UID 113) with group 'nogroup' ... Not creating home directory '/var/lib/influxdb'. Adding group 'influxdb' (GID 120) ... Done. Adding user 'influxdb' to group 'influxdb' ... Adding user influxdb to group influxdb Done. Processing triggers for systemd (215-17+deb8u4) ... Processing triggers for man-db (2.7.0.2-5) ... $ ps aux | grep influx influxdb 1442 0.5 3.1 897392 27904 ? Ssl 10:33 1:18 /usr/bin/influxd -config /etc/influxdb/influxdb.conf pi 6804 0.0 0.2 4276 1908 pts/1 S+ 14:17 0:00 grep influx $ ss -lntp | grep 808 LISTEN 0 128 :::8083 :::* LISTEN 0 128 :::8086 :::* LISTEN 0 128 :::8088 :::*
(※v1.2のinstall方法も書きました)
portaltan.hatenablog.com
2. confirm GUI
GUIのportは8083なので、「http://{raspberryPiのIP}:8083」にアクセスして、以下のようなGUI画面が出てくることを確認
「SHOW DATABASES」と打ち込み、きちんとクエリも投げられることを確認
influxdb APIの使い方
DATABASEの作成
$ curl -i -XPOST http://localhost:8086/query --data-urlencode "q=CREATE DATABASE ${作成したいdatabase名}"
- endpointは/query
データ投入
method
$ curl -i -XPOST "http://localhost:8086/write?db=${データ投入したいdatabase名}" --data-binary '${measurement名} ${Field名(column名)}=${値}'
- endpointは/write
確認
$ curl -i -XPOST "http://localhost:8086/write?db=mydb" --data-binary 'test_measurement value=100' $ curl -i -XPOST "http://localhost:8086/write?db=mydb" --data-binary 'test_measurement value=200' $ curl -i -XPOST "http://localhost:8086/write?db=mydb" --data-binary 'test_measurement value2=200' $ curl -G 'http://localhost:8086/query?db=mydb&pretty=true' --data-urlencode 'q=SELECT * FROM test_measurement' { "results": [ { "series": [ { "name": "test_measurement", "columns": [ "time", "value", "value2" ], "values": [ [ "2017-02-03T05:45:22.049368887Z", 100, null ], [ "2017-02-03T05:45:31.98145523Z", 200, null ], [ "2017-02-03T05:49:57.29042142Z", null, 200 ] ] } ] } ] }
ちなみに自分の中ではinfluxdbの各項目はこんなイメージです
influxdb | mysql |
---|---|
database | database |
measurement | table |
field | column |
install grafana
1. install grafana
### install grafana-data $ wget http://ftp.us.debian.org/debian/pool/main/g/grafana/grafana-data_2.6.0+dfsg-3_all.deb $ sudo dpkg -i grafana-data_2.6.0+dfsg-3_all.deb $ sudo apt-get install -f ### install grafana $ wget http://ftp.us.debian.org/debian/pool/main/g/grafana/grafana_2.6.0+dfsg-3_armhf.deb $ sudo dpkg -i grafana_2.6.0+dfsg-3_armhf.deb $ sudo apt-get install -f $ ps aux | grep grafana grafana 5525 0.0 1.5 884972 13804 ? Ssl 10:54 0:07 /usr/sbin/grafana --config=/etc/grafana/grafana.ini cfg:default.paths.logs=/var/log/grafana cfg:default.paths.data=/var/lib/grafana pi 7006 0.0 0.2 4276 1908 pts/1 S+ 15:43 0:00 grep grafana $ ss -lntp | grep 3000 LISTEN 0 128 :::3000 :::*
2. GUI確認
portは3000なので、「http://{raspberryPiのIP}:3000」にアクセスして、以下のようなGUI画面が出てくることを確認
- 初期アカウントはadmin/admin
ログインすると以下のような画面が表示される
3. Dashboard作成
Data Sourceの設定
- Name: 好きな名前
- Type: influxDB
- Url: influxDBのAPI
- Database: アクセスするdababase名
- user/pasword: root/root
気象庁の風向・風速の計測(計算)方法
瞬間風向・瞬間風速・最大瞬間風速
- 瞬間風向:0.25秒毎の瞬間の風の向き
- 瞬間風速:風速計の測定値(0.25秒間隔)を3秒間平均した値(測定値12個の平均値)
- 最大瞬間風速:(任意の期間中の)瞬間風速の最大値
平均風向・平均風速・最大風速
- 平均風向:10分間のデータの平均風向
- ただし航空機の離着陸のための観測においては2分間で平均を出す
- 平均風速:10分間のデータの平均風速
- ただし航空機の離着陸のための観測においては2分間で平均を出す
- 最大風速:(任意の期間中)平均風速の最大値