アットウィキロゴ

Androidアプリ

カメラから得られたbyte列はYUV形式⇒RGBに変換必要


直接YUVのビット列からRGBを作ろうとしたが無理ぽ・・・。
(計算式がおかしい?)

代用⇒cvCvtColorで仕方なく。
(追記)
YUV⇒RGB ×
YUV⇒RGBA ×
YUV⇒BGR ×
YUV⇒BGRA 〇

どうやらcvtColor以外で表色系の変換は出来ないっぽい。
ちな、Androidで表示できるのはBGRAだけに限る模様

javaで作ったMatにC++で作ったMatを格納したい


  1. java側のMatをlongに変換(mat.getNativeObjAddr())
  2. C++側でjlongとして受け取る(jlongはMatを指し示すポインタ)
  3. jlongをMat* にキャスト(これでポインタとして使える)
  4. 後はMat同士のコピー。mat.at<unsigned char>(i,j) = mat~.at~~

Java側で作ったint配列をC++側で操作したい


  1. Java側でint配列を定義
  2. C++側でjintArrayとして受け取る
  3. jintArrayのポインタを元にしてMat作成
  4. Java側でintからBitmap作成(bmp.setPixels(~))


Androidでデバッグ

__android_log_print

OpenCV Javaが良い?C++ネイティブが良い?

  • Java側でもネイティブで実装されてるので基本的には速度は変わらない
  • むしろJNICALLでオーバーヘッド生じる
  • でも、JavaのOpenCVはなんか使いにくい(慣れてないだけだけど)から、当分ネイティブで実装する
最終更新:2012年06月24日 16:46