hellkite 日記と雑記とメモ。

Shiki Kazamaの駄文と音楽と、時々技術な感じ

OpenCV for iOSをインストールした

openFrameworksのアプリでOpenCVの特徴点検出などを使いたい。そう思って、ofxOpenCVを使ってみたら実はofxOpenCVには僅かなAPIしか用意されていないことがわかりました。

一応、openFrameworksはC++なのでOpenCVも混ぜて使おうと思えば使えるはず。というわけで環境を入れてみました。といっても、手順を紹介されている記事があるので、その通りにやるだけです。

qiita.com

たった、3ステップ!

昔は、モバイル用のOpenCVなんて公開されていなくて、使えるようにするのにかなり手間だった気がするけど、今はこれだけの手順でできてしまう。しかも、プロジェクトへの導入も基本的にframeworkを指定するだけです。ずいぶんとお手軽な時代になったものです。


次は、openFrameworksとOpenCV間で画像データのやりとりをしてみます。

追記。エントリアップしました。

hellkite.hatenablog.com

 

openFrameworks for iOSでビルドできないときに確認する設定

訳あってopenFrameworksに手を出してみました。フリーの環境である程度簡単に解析結果をビジュアライズすることが可能、かつマルチプラットフォームというとopenFrameworksが一番良さそうだったのが理由です。
Cinderという似たようなものもあるのですが、openFrameworksの方は、Linux*1もあるのが決め手でした。

基本的にMac/iOS版はopenFrameworksをダウンロード後、解凍するだけで使えるのでお手軽です。解凍後、projectGeneratorでプロジェクトを生成すれば初期化されたXcodeプロジェクトが生成されます。C++を採用した環境でこんなに手軽にプロジェクトが新規作成できることに感動しました。

さて、本題です。
openFrameworksのprojectGeneratorで生成したプロジェクトは、そのままだとビルドエラーが出る場合があります。特にiOS版。エラーの内容は、こんな感じ。

No architectures to compile for (ONLY_ACTIVE_ARCH=YES, active arch=arm64, VALID_ARCHS=armv6 armv7).

または

No architectures to compile for (ONLY_ACTIVE_ARCH=YES, active arch=x86_64, VALID_ARCHS=i386).

どうやら、openFrameworksのライブラリは新しいCPUアーキテクチャに対応していないみたい。自前でビルドすれば別なんだろうけど。ライブラリファイルをfileコマンドで確認してみると対応しているCPUアーキテクチャが確認できます。

$file freeimage.a
freeimage.a: Mach-O universal binary with 2 architectures
freeimage.a (for architecture armv6): current ar archive random library
freeimage.a (for architecture armv7): current ar archive random library 

 

プロジェクトをこんな風に変更すれば、正常にビルドできます。

Architecturesにarmv6、armv7を入れ、Valid Architecturesもarmv6  armv7としておきます。アプリのプロジェクトとiPhone+OF Static Libraryにも同じ設定をしておきます。

f:id:deis:20150617004112p:plain

ちなみに、シミュレータで動作させる場合は、lib/osxの方に入っているライブラリの設定が必要です*2

$file freeimage.a
freeimage.a (for architecture i386): current ar archive random library

 

アップデート(2015/6/17)

エラーのメッセージがシミュレータ用になっていたため、修正

*1:Raspbarry Piで動かす方法も公式にある

*2:やったことはないんですけど。。

MongooseでMongoDBを操作する(Ubuntu)

Node.jsと合わせて語られることが多い、MongoDB+Mongoose。知らないわけにはいかないだろうというわけで、インストール。細々した設定なしで動作するのが素敵。とりあえず、手順だけメモ。前提として、Node.jsがすでにインストールされていること。

まず、MongoDBのインストールを行う。

sudo apt-get install mongodb


サーバの起動。

sudo service mongodb start


MongoDBのシェルを起動して、DBのリストを表示する。

mongo
show dbs

デフォルトのlocalとかいうDBが見えればインストールできてる。Ctrl+Dでコマンドラインに戻れる。


Mongooseをインストールする。

npm install mongoose --mongodb:native


あとは、その辺のサンプルを動かせばいい。
MongoDBはDBを作成するだけでは、DBは作成されず、中にデータを保存しないとDBが作成されないようだ。

書籍「実践Node.jsプログラミング」を購入した

仕事で必要になったのでちょっと知っておこうという軽い気持ちで購入。

実践Node.js プログラミング (Programmer's SELECTION)
Mike Cantelon Marc Harter T.J. Holowaychuk Nathan Rajlich
翔泳社
売り上げランキング: 51,794


手頃なサンプルも載っていてステップバイステップで習得できそうだったので、この本にしてみた。ちょっと誤植があるけど、なんとかチャットアプリが出来た。思ったより簡単に実現できる。WebSocketも手軽に使えるのがいい感じ。
Javascriptデバッグしにくいので嫌いなんだけど、付録にデバッグツールの説明があった。フレームワークやDB周りも一通り網羅してある様子。

Rubyとかと違って、HTTPサーバー立てるのにApacheを使ったりしない。HTTPサーバが簡単に立てられる。色々なシステムを連結する必要がないのはパパッと試すにはお手軽でいい。
MongoDBのMongooseも、SQLを使わなくていいのでSQLに苦手意識がある自分としては、良いチョイスになるかも。逆にSQLを使い込んできた人にはとっつきにくそうだけど。

3D関連では、three.jsといったライブラリもある。RaspberryPiをサーバー化したりするのに使ってみようかな。センサー値の可視化などに使えれば面白そうだ。

Mac OSX Mavericksにhomebrewを入れた

以前入れていたMacportの残骸と競合したのか、ワーニングがそこそこ出てインストールだけで1時間以上かかってしまいました。。
一応、忘備録としてメモ。

インストール

こんな日本語のホームページが用意されているのを知ってびびりました。。
Homebrew — OS X用パッケージマネージャー

ページの下の方にあるコマンドを言われるままターミナルのプロンプトに貼付ければ完了*1
の、はずだった。。

Xcodeのライセンスに同意していなかった

こんなメッセージが出てきてインストールできなかった。

Agreeing to the Xcode/iOS license requires admin privileges, please re-run as root via sudo.

==> Installation successful!

いや、successful!って。成功していないから。
このエラーはXcodeのライセンスに同意していないと出てくるらしい。そういえば、直前にXcodeをアップデートしていた。ライセンスに同意するためには、Xcodeを起動すれば、ライセンスの確認ダイアログが出てくるので、Agreeボタンを押せば完了です。

ワーニングへの対応!

再度、ターミナルにコマンドを打ち込めばインストール完了。というわけにはいかなかった。インストール完了後にbrew doctorを打ち込んでみるとワーニングが出てくる出てくる。
後々、問題になっても困るので対処することにする。

まず、一つ目。

Warning: Your XQuartz (2.7.4) is outdated
Please install XQuartz 2.7.7:
https://xquartz.macosforge.org

これは言われるまま、XQuartzのページに行って、インストールパッケージをダウンロード、インストールするだけで対応完了。

次。

Warning: Unbrewed dylibs were found in /usr/local/lib.
If you didn't put them there on purpose they could cause problems when
building Homebrew formulae, and may need to be deleted.

このメッセージの下に大量のファイルリストが。
念のため、/usr/local/libをコピーしておいて、ざくざく削除しました。以前、Macportで入れたものだったぽいので、確認もそこそこに。


ラスト。

Warning: Unbrewed header files were found in /usr/local/include.
If you didn't put them there on purpose they could cause problems when
building Homebrew formulae, and may need to be deleted.

というわけで、こっちも念のためバックアップをとっておいて、リストアップされたヘッダーを指示通りに削除。


再度、brew dctorを実行してみる。

Warning: Broken symlinks were found. Remove them with `brew prune`:

えーと。なるほど、リンクはしていたみたい。指示のある通り、コマンドを実行。

$ brew prune
Pruned 0 dead formulae
Pruned 44 symbolic links and 2 directories from /usr/local

できた!

$ brew doctor
Your system is ready to brew.

やった!
でも、パッケージマネージャをインストールするだけでこんなに時間かかるとは。。

念のため

アップデートは定期的にかけておきましょう。

$ brew update

*1:Command Line Tools for Xcodeはインストールしている必要があります。

ハコスコ対応アプリチュートリアルをやったときのメモ

ハコスコ、買ったのでハコスコ対応アプリのチュートリアルをやってみました。もう、だいぶ前の話ですが。
例のGoogleStreetViewを使うチュートリアルです。
UnityでGoogleストリートビューを使ったハコスコ対応アプリを作る - Qiita


だいたい、そのままやればよかったんですが、いくつか詰まるところもあったので、忘備録を兼ねて記載しておきます。

好きな場所のStreetViewを表示

この辺のサイトから目的の緯度経度情報を取得。値を設定するだけ。
地図から座標値を取得するページ

Ambient Lightの設定

さらっと出てくるこの設定。インスペクタから探しまわることになったので覚え書き。
Editメニュー -> Render Setting -> Ambient Light

Shaderの設定

ShaderはCreateすればファイルが作成される。これをアタッチするには、Materialを用意して、そのインスペクタで作成したシェーダーを設定する必要がある。
Shaderのプログラムの中身については、ここに書いてある。遊べそうではある。
Unity のシェーダの基礎を勉強してみたのでやる気出してまとめてみた - 凹みTips

Unityちゃん召還

元ネタではUnityちゃんを走らせているけど、今回はボタンをタップすると近づいてくるようにしたかった。アニメーションは初めてだったので、この辺で使い方を調べた。意外と簡単にアニメーションさせることができてびっくり。

第 1 回・Unity / Mecanimでユニティちゃんを歩かせる | ピックアップ | ギャップロ

今後の可能性

今回ハコスコという題材があったので、このようなアプリを作ってみました。でも、ジャイロセンサでカメラをぐるぐる回すというやり方、思っていたより精度が高くて色々な使い道がありそうです。
昔ジャイロセンサ使ったときは、こんなにスムーズに追従しなかったと記憶しています。動かしてみて驚きました。

未解決の問題

iPhoneに転送してみたら、Unityちゃんの表示がおかしい。

GameViewでは問題がないんですけどね。検索してみたけど、同じ事例がなかったので困った。

ハコスコ
ハコスコ
posted with amazlet at 14.09.14
SR laboratories
売り上げランキング: 4,953

国産低価格HMDを買ったよ!

届いたよ!最新の機器はさすがに薄い!


早速開封。


取り説の注意事項。
屋外でHMDに夢中になっていると何されるかわかりませんからね。安心の火力を搭載。


大きなパーツが2つ。シンプルな筐体こそベスト。


レンズ汚れ過ぎ。ダンボールだから仕方がない。


ちょっと試すのにも自分でアプリ組まないといけないと思ってたけど、ちゃんとiOSアプリがストアにあった。安心のサポート。今後対応アプリも登場予定。


組み立て完了。実は1回折る場所間違えたっぽい。要工作力。


ちゃんとカメラ穴、イヤホン用の穴がある。


レンズ側。


裏の謎の穴。ここから指突っ込んでiPhone画面上のボタンを押すことができる。さすがのUI。


と、ハコスコ開封の儀をサクッと流してみました。
試してみたけど、没入感?っていう感じです。まぁ、ダンボールですし。。こいつの強みはダンボール製ゆえ改造しまくってもOKってことに尽きます。安いから壊れてもいいしね。
とりあえず、Unityでサンプル作ってみるかな。最終的にはジェスチャコントローラと組み合わせて、色々作りたいですね。じゅるり*1

ハコスコ
ハコスコ
posted with amazlet at 14.07.30
SR laboratories
売り上げランキング: 999

*1:最近忙しすぎて壊れ気味なので。。ネタっぽくてすみません。