5

そこで、次のコードで blob からビットマップを作成します。

byte[] blob = contact.getMP();
ByteArrayInputStream inputStream = new ByteArrayInputStream(blob);
Bitmap bitmap = BitmapFactory.decodeStream(inputStream);
Bitmap scalen = Bitmap.createScaledBitmap(bitmap, 320, 240, false);

そして、それは次の出力を返します。これは良いことです

ここに画像の説明を入力

次に、次のようにしてビットマップをマットにしますが、色が変わるだけです...

//Mat ImageMat = new Mat();
Mat ImageMat = new Mat(320, 240, CvType.CV_32F);
Utils.bitmapToMat(scalen, ImageMat);

理由も、ビットマップをマットにする別の方法もわかりません。なにが問題ですか? ここに画像の説明を入力

4

1 に答える 1

14

Android Bitmap のカラー チャネルの形式はRGBです が、opencv Mat ではチャネルはデフォルトでBGRです。

したがって、Utils.bitmapToMat() を実行すると、[B,G,R] 値が [R,G,B] チャネルに格納されます。赤と青のチャンネルが入れ替わります。

考えられる解決策の 1 つは、以下のように取得した opencv Mat に cvtcolor を適用することです

それは私のために働いた。

于 2015-02-19T23:05:55.357 に答える