2012年2月6日月曜日

Matを使ってみる! その1 - OpenCV for Android


OpenCVを語る上でどうやっても外せないのが「Matクラス」です。
何かというと、「Matクラスは,実際のデータへのポインタと,様々なプロパティ(幅,高さ,ビット深度など)を保持します。」だそうです。
もう見るからに気難しい、奥が深そうなヤツです。


深入りするのはやめときましょう。


取りあえずMatを作成してみて、ただ真っ赤なだけのBitmapを描画してみましょう。
コンストラクタは以下。


Mat(Size size, int type, Scalar s)
※デフォルトコンストラクタでnewして、create(Size size, int type)とsetTo(Scalar scalar)メソッドで後からも設定出来る模様。



1.Matを作成する
Size size = new Size(20, 20);
int type = CvType.CV_8UC3;
Scalar scalar = new Scalar(0, 0, 255);
Mat mat = new Mat(size, type, scalar);

2.matToBitmapでMatをBitmapに変換して描画する。
Bitmap bitmap= Bitmap.createBitmap(mat.width(), mat.height(),
  Bitmap.Config.ARGB_8888);
Utils.matToBitmap(mat, bitmap);
ImageView iv = (ImageView) findViewById(R.id.imageView1);
iv.setBackgroundColor(Color.GRAY);
iv.setImageBitmap(bitmap);

3.実行


!!


・・・・

な、何ですか?このサイケデリックな模様はwwwww

20×20の真っ赤な画像が表示される予定だったのに。。。


4.今日のところはあきらめる

気難しいMatさんなのかSizeなのかScalarなのか、そもそもcreateBitmapのあたりが問題なのか。。
解決しないまま夜は更けていくのです。。

0 コメント:

コメントを投稿