2012年2月10日金曜日

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


前回良く分からないながらにMatを触ってみましたが、以下のようなサイケデリックな結末を迎えたままでした。
※20×20ピクセルの赤い四角が表示されるはずでした。


サイケな世界に軽く心を奪われかけたところで、何が悪いのか色々と調べてみたところ、MatではBGRAのBitmapになっているようで、Bitmapに変換する前にImgproc.cvtColor(Mat src, Mat dst, int code, int dstCn)でRGBAへ変換する必要があるようです。
  Mat matBGRA = new Mat(size, type, scalar);
  Mat matRGBA = new Mat();
  Imgproc.cvtColor(matBGRA, matRGBA, Imgproc.COLOR_BGRA2RGBA, 4);

また、出力したBitmapがImageViewのサイズに勝手に合わされてしまわないように、setScaleType(ScaleType.CENTER)で自動伸縮しないよう設定します。

うまくいきました!


ついでにSizeとScalarの引数を変更して、意図した変化があるかやってみました。

  Size size = new Size(30, 30);
  Scalar scalar = new Scalar(0,  255 , 255);

意図したとおりになりました。


ということで、サイケな世界からの離脱は名残惜しいものの、前回謎のままにしていた部分はこれでクリアです。

1 コメント:

コメントを投稿