画像認識の実験

飼い犬の様子を見るために、Raspberry Piwebcamを付けて見られるようにしている。 ついでに、画像認識で色々と識別できないか、試している。

Raspberry Piで完結できれば楽そうだけど、厳しいかな、と思いつつ探してみたら、

Using Tensorflow on a Raspberry Pi in a Chicken Coop というページを見つけた。 これでやりたいことはほぼできているじゃないか、 ということで、終り。

とはならず…

そもそも、カメラ用のRaspberry Piは1なのだが、 GitHub - samjabrahams/tensorflow-on-raspberry-pi: TensorFlow for Raspberry Pi は、2か3で使えるもの。

それではと、別のRaspberry Pi2にインストールしてみたが、 サンプルがエラーで動かなかった。

単純に画像判別だけであれば、 How to Retrain an Image Classifier for New Categories  |  TensorFlow の通りにやればできるので、当面macで動かすことにした。

ただ、誤判定がまだあり、チューニングが必要かもしれない。

scintermがscintilla本体に取り込まれていた

scintillaというテキストエディタフレームワークがある。 そのscintillaのncurses実装に、scintermというのがあったのだが、 いつのまにか、本体に取り込まれていた。バージョン3.8.0かららしい。

scintillaの最新バージョンは、4.05だが、3.x系列は、long term3 branchという形で残っている。

scintillaの4系列は、新しめのC++コンパイラが必要。scintermは3.x系列のみサポートと以前より謳っていた。

それで、名前も変わっていて、ScintillaTermからScintillaCursesとなっている。

scintermのmruby実装(mruby-scintermを作っていたのだが、折角なので、新しくmruby-scintilla-cursesも作ってみた。

GR-SAKURAでGROVEのボタンと7セグメント4桁ディスプレイを使う

ボタンは単純にINPUTの状態を調べれば良い

GitHub - Seeed-Studio/Sketchbook_Starter_Kit_for_Arduino

のサンプルを参考に。

7セグメント4桁ディスプレイは、ライブラリを使う。

Arduinoで7セグメント4桁ディスプレイLED05291Pを試す - Qiita が参考になった。

ライブラリのヘッダについて、Arduino.h はrxduino.hに変更。 inttypes.hはインクルードしない。

scinterm 1.9のビルドエラー

Scintilla 3.7.5に対応したscinterm 1.9がリリースされていたが、ビルドするとエラー発生。

コンパイラのバージョンなどを変えてみたり、コンパイルオプションを変えてみたりしたが改善せず。

以下の変更で、エラーは取れた。 後で、もうちょっと真面目に調査する。

diff -ru scinterm_1.9-org/ScintillaTerm.cxx scinterm_1.9/ScintillaTerm.cxx
--- scinterm_1.9-org/ScintillaTerm.cxx  2017-06-26 05:25:19.000000000 +0900
+++ scinterm_1.9/ScintillaTerm.cxx      2017-08-04 20:46:51.000000000 +0900
@@ -15,10 +15,13 @@
 #include <string>
 #include <vector>
 #include <map>
+#include <new>
 #include <algorithm>
+#include <memory>

 #include "Platform.h"

+#include "UniqueString.h"
 #include "Scintilla.h"
 #include "ILexer.h"
 #include "Position.h"
@@ -1284,7 +1287,7 @@
           int offset = ry - ny - 1; // -1 ignores list box border
           if (offset == 0 &&
               time - autoCompleteLastClickTime < Platform::DoubleClickTime()) {
-            ListBoxImpl* listbox = reinterpret_cast<ListBoxImpl *>(ac.lb);
+            ListBoxImpl* listbox = reinterpret_cast<ListBoxImpl *>(ac.lb.get());
             if (listbox->doubleClickAction != NULL)
               listbox->doubleClickAction(listbox->doubleClickActionData);
           } else ac.lb->Select(n + offset);

nokogiriとかのインストールにてこずる

久々に、使いたいrubyのライブラリがあり、動かしたらnokogiriが無いと言われた。

gemでインストールしようとしたらエラー。

いろいろ試行錯誤した結果、

nokogiriが(また)インストールできない - \ay diary

を見付けて、回避策(a)「一時的にbrew unlink xzする」を選択。

ついでにemacsskkが動かなくなっていたので、 再インストール。 こちらは、まだ問題が残っているので、後で調査する。

Scintillaとmrubyでテキストエディタを作る(7) : GTK版の更新

Scintillaを使ったテキストエディタのその後。

masahino123.hatenablog.com

mruby-gtk3を使うのを断念して、GTK関係の処理はC言語で書くようにした。

f:id:masahino123:20170313231120p:plain

せっかくなので、curses版とは少し見た目を変えてみた。

テキストエディタを作っていると、いくらでも作り続けられるので、 ネタに困らなくて良い。

最低限の編集と保存ができれば、作成中のエディタを使って、 編集していれば、なにかしら直すところが見つかるので、 それを直すという作業をひたすら繰り返すことになる。

飽きてくれば、少し高度なことに挑戦すれば良いし、 実装のお手本は、沢山ある。