2010年11月11日木曜日

カメラ機能を色々追加してみた

ラジコン操縦のアプリでカメラ映像の機能を色々追加してみた
拡大、回転などなど




軽くの説明は動画でしています。
カメラ映像はボードからJPEGデータのbyte配列として取得することができるので、
それをBitmapFactoryを駆使してBitmapにデコードします。
そしたら、Canvas.drawBitmapをつかって描画するだけ。
カメラ映像はSurfaceView上に表示しているので、簡単。
拡大をしたい場合は元データのRectと画面サイズのRectを指定してあげるだけ
思っていたよりもコストが掛からないみたいでサクサク動いてくれた。
DirectXを使ったWinでのプログラムだと意外と重い処理だった気がするんだけど
Androidは比較的軽いみたい。
あと、カメラ映像の回転はCanvas.rotate()を使って実現
ただ、一度回転すると文字とかも全部回転しちゃうので、
カメラ映像を描画したら逆方向に回転して元に戻す処理を加えた。
これも思っていたよりも軽くてびっくり
もっとカクカクした動作になるかと思っていたけどなんとかなってる。
むしろ、もともとのJPEGデータを描画する処理自体がなぜか重いのでカメラ映像の遅延がすこしある
このへんがAndroidのせいなのか、IS01の限界なのか、俺のプログラムスキルの限界なのか検証をちゃんとしてみないといけない
DDMSの情報だとCPUは3/4ほど使ってるし、TraceViewの情報だとGCで30msほど取られているのがまずいのかもしれない。

0 件のコメント:

コメントを投稿