min117の日記

初期desireもち。趣味Mac,メインFedora,仕事xp。

RaspberryPi(初代) docomoAPIの画像認識ライブラリを試す

docomoAPIについては過去記事を。docomoのサイトに登録必要。

min117.hatenablog.com

サイト内に、APIのサンプルコードが並んでいる。

dev.smt.docomo.ne.jp

f:id:min117:20170128100106p:plain

開発者が製作したライブラリが置いてあった。「docomocvpy」というのが面白そう。(docomoの)画像認識APIPythonラッパーらしい。

f:id:min117:20170128100115p:plain

HTML5はいずれ試す。

f:id:min117:20170128100123p:plain

f:id:min117:20170128100132p:plain

開発者作成の画像認識ライブラリ「docomocvpy」を試す。

f:id:min117:20170128100443p:plain

f:id:min117:20170128100433p:plain

f:id:min117:20170128101900p:plain

f:id:min117:20170128101722p:plain

 

 

RaspberryPi(初代) のCamera映像をWebSocketでブラウザから見る(Python3)

この記事そのまま試したい。

ami-gs.hatenablog.com

けど、肝心のimport文が省略されてたりで不明な点が多い。ソースは丸写ししたけど、そのままじゃ動かない。直しては動かして試行錯誤中。例えば30行目とか。

ソース

f:id:min117:20170127075255p:plain

f:id:min117:20170127075316p:plain

 

RaspberryPi(初代) のCameraをPythonから使えるようにする(import picamera)

lこのサイトにあるとおりやりたい。

ami-gs.hatenablog.com

手持ちのRaspberryPi(初代)のPythonバージョンは3.5.1

f:id:min117:20170123001454p:plain

このPython3.5.1でRaspberryPiのカメラを動かして画像や動画をとりたい。まずは画像から。ソースは上記サイトを丸うつし。

f:id:min117:20170123001228p:plain

$ vim picamera_pic.py

f:id:min117:20170123000807p:plain

f:id:min117:20170123000817p:plain

$ python picamera_pic.py

f:id:min117:20170123000838p:plain

ImportError: No module named 'picamera' と出た。picameraモジュールをインストールしなければいけないらしい。冒頭サイトで紹介されたリンクにいってみる。

2. Python 3.2+ Installation — Picamera 1.2 documentation

f:id:min117:20170123000854p:plain

この手順どおりインストールしてみる。

$ sudo apt-get install python3-setuptools

f:id:min117:20170123001009p:plain

無事にインストールされた。

 

 

 

次はpicameraをインストールする。

$ sudo easy_install3 picamera

f:id:min117:20170123001025p:plain

f:id:min117:20170123001055p:plain

こちらも無事にインストールされた。

 

picameraモジュールを最新版にアップデートする。

$ sudo easy_install3 -U picamera

f:id:min117:20170123001107p:plain

こちらも正常にインストール完了。

 

$ sudo rm -fr /usr/local/lib/python3.*/dist-packages/picamera-*

f:id:min117:20170123002719p:plain

$ sudo sed -i -e '/^\.\/picamera-/d' /usr/local/lib/python3.*/dist-packages/easy-install.pth

f:id:min117:20170123002725p:plain

まだエラーになる。なんで?

f:id:min117:20170123002143p:plain

 

 

 

いろいろ調べた。たぶんこれでイケる。

Forum

f:id:min117:20170123004424p:plain

$ sudo apt-get install python3-picamera

f:id:min117:20170123004502p:plain

インストールできた。

f:id:min117:20170123004633p:plain

 

もう一回実行を試す。

f:id:min117:20170123002143p:plain

エラー…。ダメだこりゃ。たぶんpyenvで入れてるPATHから見えてないんだと思う。てか、Pythonはバージョン2も3もあり、さらにはpipありeasy_installありpyenvありanacondaありで、くっそ分かりにくい。

 

バージョンを再確認。

f:id:min117:20170123010055p:plain

f:id:min117:20170123010035p:plain

 

「pyenv picamera」でググる

2. Python 3.2+ Installation — Picamera 1.10 documentation

f:id:min117:20170123010936p:plain

このサイトどおりにやってみる。

sudo apt-get install python3-pip

f:id:min117:20170123010952p:plain

インストール完了。

f:id:min117:20170123011538p:plain

なんか文字列の中に「3.4」が多数ある。

$ sudo pip-3.2 install "picamera[array]"

でやるかと思ったけど、「3.2」のとこは「3.4」に読み替えてみるか。

sudo pip-3.4 install "picamera[array]"

f:id:min117:20170123011629p:plain

どっちもダメだ。

 

f:id:min117:20170123012142p:plain

どうもpipコマンドが複数あるらしい。しかもsudoだとコマンドが見つかりませんになっちゃう。これならどうだ。

・pip --version で表示された最新バージョン pip3.5 を実行する

sudoをつけないで実行する。

$ pip3.5 install "picamera[array]"

f:id:min117:20170123012455p:plain

なんかものっすごい時間かかってる。ps aux | grep pyしてみるとコンパイルしてるみたい。終わらないから放っておいてみる。

 

インストールが終わった。続いてアップデートする。

f:id:min117:20170124195344p:plain

実行してみる。

f:id:min117:20170124195333p:plain

解像度(resolution)なんていう属性(attribute)はない、とエラー。

f:id:min117:20170124200216p:plain

解像度決める処理をコメントアウトしてみる。

f:id:min117:20170124200146p:plain

実行。

f:id:min117:20170124200123p:plain

撮れた!(天井)

f:id:min117:20170127073958p:plain

これでPythonから写真が撮れるようになった。色々試せる。

 

ipython notebook が command not found になってしまった対処

前記事では動いた ipython がコマンドエラーになる。

f:id:min117:20170122132721p:plain

PATHが通ってなかった。~/.bash_profile に記述ミスってたようだ。

f:id:min117:20170122132734p:plain

$ vim ~/.bash_profile

f:id:min117:20170122133323p:plain

f:id:min117:20170122133255p:plain

$ source ~/.bash_profile

f:id:min117:20170122133303p:plain

$ ipython notebook

f:id:min117:20170122134010p:plain

うむ。起動した。

iPythonの機能に感動する

前記事で、iPython notebook を使いたくてインストールしたものの、肝心のiPythonって何?って状態だった。改めて調べてみる。

qiita.com

結論としてiPythonは「pythonの中でbashコマンドも使えるシェル」って感じ。つまり、超便利。感動する。

ーーー

上記記事のとおりコマンド実行してテスト。

$ ipython

f:id:min117:20170122121603p:plain

Anaconda版の(?)pythonが起動した。コンソールの頭には行番号がつくようだ。

f:id:min117:20170122121718p:plain

インポートするモジュール名の補完機能(Tabキーで候補が出る)。

f:id:min117:20170122122325p:plain

インポートしたモジュールの中も補完。

f:id:min117:20170122122336p:plain

自分が宣言した変数も補完。

f:id:min117:20170122122338p:plain

宣言した変数そのままの文字列を打ったらOut出力された。

f:id:min117:20170122122340p:plain

bashのcatコマンドそのまま使えたのには驚き。しかも引数を補完してくれる

f:id:min117:20170122122342p:plain

イントロスペクション(引数の調査) ハテナマーク。

f:id:min117:20170122122343p:plain

組み込みモジュールへのイントロスペクション。

f:id:min117:20170122122346p:plain

ハテナマーク2つだと、より詳細な情報を表示するとのこと。

f:id:min117:20170122122348p:plain

マジックコマンド

f:id:min117:20170122122409p:plain

f:id:min117:20170122122419p:plain

iPythonを抜けるときは ctrl + d でいいらしい。

f:id:min117:20170122123357p:plain

ふたたびマジックコマンド。

f:id:min117:20170122123403p:plain

あたまのパーセント表示が2つだと複数行かけるとのこと。

f:id:min117:20170122123411p:plain

%quickref でマジックコマンドの一覧を確認

f:id:min117:20170122124850p:plain

f:id:min117:20170122124751p:plain

f:id:min117:20170122124801p:plain

f:id:min117:20170122124814p:plain

f:id:min117:20170122124827p:plain

f:id:min117:20170122124840p:plain

履歴機能。

f:id:min117:20170122125854p:plain

ビックリマークをつければ bash のこまんどそのままが使えるようだ。ctrl + c で中止。

f:id:min117:20170122125858p:plain

f:id:min117:20170122125900p:plain

f:id:min117:20170122130102p:plain

RaspberryPi ZERO の OSMC で 地デジを見る(プレイリストtideji.m3uを作成)

せっかくRaspberryPi ZERO を買ったので、母艦サーバのrecpt1から配信したハイビジョン映像を捕まえて、テレビを観れるようにする。

以前にもおなじようなことをやったので、それを ZERO でやっていく。

min117.hatenablog.com

ーーー

ハイビジョン映像を見るためのチャンネルプロファイルは上記記事で作成済み。記事中で使った環境(OpenELEC)から、プロファイルtideji.m3uを取ってくる。自作sshスクリプトでログイン。パスワード初期値はopenelec。

f:id:min117:20170121121559p:plain

$ cd /storage/.kodi/userdata/playlists/video/

f:id:min117:20170121121703p:plain

$ cat tideji.m3u

f:id:min117:20170121121751p:plain

この地デジのチャンネルプロファイルを、新調したRaspberryPi ZERO にscpで移動。

f:id:min117:20170121122228p:plain

ーーー

次は RaspberryPi ZERO のほうに ssh でログイン。m3uの置き場所は以下(OpenELECと同じ)。

cd /storage/.kodi/userdata/playlists/video/

f:id:min117:20170121122836p:plain

さっきscpで持ってきたtideji.m3uを配置する。

$ cp ~/tideji.m3u  /storage/.kodi/userdata/playlists/video/

f:id:min117:20170121122858p:plain

リモコンで再生してみる。

f:id:min117:20170121124124p:plain

f:id:min117:20170121124133p:plain

f:id:min117:20170121124144p:plain

f:id:min117:20170121124154p:plain

f:id:min117:20170121124209p:plain

スムーズ再生。普通のテレビと変わらない。このサイズでほんと最高だ。

f:id:min117:20170121124224p:plain

 

iMac(macOS Sierra)に Python3 のインストール(Homebrew使用、pyenv → virtualenv → anaconda)

iMacmacOS Sierra)に前記事でHomebrewをインストールしたので、引き続きPythonをインストールする。この記事どおり進める。

qiita.com

$ brew install pyenv

f:id:min117:20170117233715p:plain

f:id:min117:20170117233704p:plain

$ brew install pyenv-virtualenv

f:id:min117:20170117233657p:plain

$ PYENV_ROOT=~/.pyenv

f:id:min117:20170117234318p:plain

$ export PATH=$PATH:$PYENV_ROOT/bin

f:id:min117:20170117234313p:plain

$ eval "$(pyenv init -)"

f:id:min117:20170117234307p:plain

$ eval "$(pyenv virtualenv-init -)"

f:id:min117:20170117234301p:plain

evalコマンド についてはこのへん。

qiita.com

f:id:min117:20170122132415p:plain

$ pyenv

f:id:min117:20170117235255p:plain

$ source ~/.bash_profile

f:id:min117:20170117235325p:plain

$ pyenv install --list | grep ana

f:id:min117:20170117235715p:plain

$ pyenv install anaconda3-4.2.0

f:id:min117:20170118000135p:plain

$ pyenv versions

f:id:min117:20170118000600p:plain

$ pyenv global anaconda3-4.2.0

f:id:min117:20170118000535p:plain

pyenv versions

f:id:min117:20170118000531p:plain

$ ipython notebook

f:id:min117:20170118000522p:plain

f:id:min117:20170118000452p:plain

右上の「New」から Python を選択してコードを書いていく。

f:id:min117:20170118001002p:plain

Pythonコード

>>> for i in range(1,10):

(ここでタブキー)print(i)

(ここでEnter)

(最後に Shift+Enter)

f:id:min117:20170118001017p:plain

Python でグラフィックを含めたコーディング結果を試せるようになったので、turtleとかいう機能で、絵を描いてみる。このサイトのとおり進める。

qiita.com

>>> from turtle import *

>>> dir()

f:id:min117:20170118002033p:plain

>>> forward(100)

>>> circle(100)

f:id:min117:20170118001920p:plain

f:id:min117:20170118002824p:plain

f:id:min117:20170118002811p:plain

f:id:min117:20170118003341p:plain

f:id:min117:20170118003331p:plain

次は、冒頭の書籍にあるグラフを作ってみる。p34「2.3 matplotlib でグラフを作る」のコードそのまま。

>>> x_numbers = [1, 2, 3]

>>> y_numbers = [2, 4, 6]

>>> from pylab import plot, show

>>> plot(x_numbers, y_numbers)

>>> show()

f:id:min117:20170118004215p:plain

すげぇ。グラフ出た。感動する。どんどん作る。

p37「2.3.3 ニューヨーク市の年間平均気温をグラフ化する」

f:id:min117:20170118004742p:plain