そもそも 色空間とは???
色を表す 数字の組み合わせであることは 違いがないが WEBをあっちこっち見てみても ARGB とかグレースケールぐらいしかなじみが無い。ところがOpenCvが対応しているパターンには ゆうに10は越える種類がある。なにがなんやら・・???
深追いは無理と判断し、テスト用の画像を準備してグレースケール変換テスト開始 !!
テスト画像
public class OpenCVnyumonActivity extends Activity {
ImageView imgv;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
requestWindowFeature(Window.FEATURE_NO_TITLE);
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Bitmap src = BitmapFactory.decodeResource(getResources(), R.drawable.colorsample);
Bitmap src2 = src.copy(Bitmap.Config.ARGB_8888, true); <---(1)
Mat mat = android.BitmapToMat(src2);
Imgproc.cvtColor(mat , mat, Imgproc.COLOR_RGB2GRAY);
Imgproc.cvtColor(mat , mat, Imgproc.COLOR_GRAY2BGRA,4); <---(2)
Bitmap dsc= Bitmap.createBitmap(mat.width(), mat.height(), Bitmap.Config.ARGB_8888);
android.MatToBitmap(mat, dsc);
imgv = (ImageView)findViewById(R.id.imageView1);
imgv.setImageBitmap(dsc);
}
}
(1)Win7のpaintで書き込んだ画像(png)でも ARGB_8888に変換しないとBitmapToMatが正常に実行できなかった。
(2)Imgproc.cvtColorでグレースケールにした後 グレースケールからBGRに変換しないと起動してすぐActivityが終了してしまう。ただし LogCatにはなにも記録されない。
グレースケール変換結果
例のすずらんの画像をグレースケールにすると

色空間の概念を十分に理解しておかないと後で苦労するのかな?? 若干不安
参照URL
http://opencv.jp/cookbook/opencv_img.html#id3
http://geekn-nerd.blogspot.jp/2012/02/opencv-for-android.html
| by Android2.2 with OpenCv 2.3.1 for Android |