phonondrive

2007.02.18

+ Ruby :: SDL :: Ruby で画像認識

Camellia (sourceforge.net) というオープンソースの画像処理ライブラリを試してみました。

インストールは簡単で、> gem install camellia とやるだけです。あとは付属のサンプルスクリプト手持ちの画像を読み込むようにしてみると、あら簡単。

before

赤 (255, 0, 0) 輝度信号 (Y) と赤色成分の差 (V) を抽出

after

Camellia では DIB 形式でデータを持ってるので (正確には、DIB ですぐ吐ける)、SDL::Surface.new_from でそのまま SDL の Surface に乗りました。

image_sdl = SDL::Surface.new_from(image_camellia.get_pixels, height, width, depth, pitch, 0x0000ff, 0x00ff00, 0xff0000, 0)

※ (R|G|B)mask の使い方、やっとわかった。camellia では、RGB じゃなくて BGR でデータ持ってるみたいです。最初は色が変だった。OpenCV もこの形式だとドキュメントには書いてあったような・・・Computer Vision 界ではこっちの方が扱い易いのかしら。

※ pitch には width*3 を入れたらうまくいきました。この辺も全然わかってない。まぁ結果オーライで。

Camellia/Ruby/SDL

ちなみに認識した領域は、x, y, height, width でデータ持ってますので、SDL でカッコよくマーキングすることも出来そうです。

でも静止画だとつまんないからホントは webcam からの映像で遊びたいわけで、実は OpenCV (sourceforge.net) に目をつけていたのですが、Ruby/OpenCV (blueruby.mydns.jp) は最新版は cvs で拾って cygwin でコンパイルしてね、な感じで手が出ませんでした。そういえば extconf.rb ってのは cygwin 用なのでしょうか。mingw32/win32 で通ったためしがないです。

+ Ruby :: Ruby で Webcam したい。

Linux だと v4l 用のライブラリがいくつか Rubyforge に登録されてましたが、Win32 用がないんですよね。Video for Windows やら Twain やら DirectShow の API を眺めては、Ruby/Win32API でなんとかならないものかと試してみましたが、そもそも Win32API の引数の扱い方をよく理解してなくて全然うまくいかない。Ruby にはポインタがないらしいんだけど。

一方、Python の VideoCapture (sourceforge.net) てのを見つけて、Python ともどもインスコしてみたら、これまた簡単に絵が出てきて嬉しいやら悲しいやら。あ、Ruby/Python (waseda.ac.jp) でなんとかなるかなと思ったら、Ruby 1.6×Python 1.5 用だった。しばらく格闘してみたけど、これまた全然うまくいかない。

Ruby/OpenCV のサンプルを見てみると、capture = CvCapture.open(0) でデバイス開いてるし。なんて楽しそうな環境なんだ〜。

あーでもない、こーでもないとやってるうちに一日がオワタ。

本日のツッコミ (4件) [ ツッコミを入れる ]
+ Misty (2007.02.19 23:24)

おぉぉ、なんとも面白そげな事をしてらっしゃる!(=゜ω゜)

> RGB じゃなくて BGR でデータ持ってるみたい
→ ttp://www.idevgames.com/forum/archive/index.php/t-10166.html
確かバイトオーダーの違いで (R|G|B)mask に渡す値が変わってくるものだったと思います (ビッグエンディアンなら 0xff0000, 0x00ff00, 0x0000ff の順になりますね)。ただの勘違いだったらごめんなさい。

:

→ ttp://misky.yu-nagi.com/storage/mst/img008.jpg
そういえば一度パラ読みして以来全然読んでなかった。もうしばらく Squirrel を愛し続ける構えなのです。Ruby みたいに公式から日本語ドキュメントがリリースされていたり数々のライブラリがバインドされている言語が恨めしい…もとい、羨ましいザマス!

+ phonondrive (2007.02.20 00:36)

> バイトオーダー
り、りろんはしっている。・・・なるほど。そういうことですか。

> たのしい
あ、それ同じ本です。初版なので赤いですけど。いろいろ見たけど一番よかった。
Ruby は楽しい言語だと思ってますけど Misty さんにはちと物足りないかもですよ。

+ saronpasu (2007.02.21 10:08)

Rubyは楽しい言語ですね。
(他の会話はよく理解していないのでそこだけ同意)

+ phonondrive (2007.02.22 01:29)

優劣はともかく、楽しさはガチ。

お名前:
空欄:
コメント:

最新 | TOP に戻る

· affiliates
Ads by Google AdSense Associated with Amazon.co.jp Powered by Amagle AltADs Affiliated by VALUE DOMAIN
· hosting servers
XREA ismusic networks

Subscribe with livedoor Reader



FRUITS CLiPPER, capsule SSugarless GiRL, capsule THE IDOLM@STER MASTER ARTIST 07 三浦あずさ NEXUS-2060, capsule