0

SDカードから画像をロードしてImageViewに投稿するコードがあります。

Mat mRgba = Highgui.imread(dir);
Bitmap bmp = Bitmap.createBitmap(mRgba.cols(), mRgba.rows(),Bitmap.Config.ARGB_8888);
Utils.matToBitmap(mRgba, bmp);
mImage.setImageBitmap(bmp, true, null, 5.0f);

画像は読み込まれますが、色が間違っています。色が反転しているように見えます (反転していません)。画像比較はこちら

で画像を読み込もうとしました

Bitmap bmp = BitmapFactory.decodeFile(dir);

正しく動作しました。しかし、私は使用する必要がありますHighgui.imread

私のコードの何が問題なのですか?

4

3 に答える 3

3

次のようなものを使用する必要があります。

    Mat inputImage = Highgui.imread(pathToFile);
    Mat tmp = new Mat();

    Imgproc.cvtColor(inputImage, tmp, Imgproc.COLOR_BGR2RGB);

    Bitmap imageToShow = Bitmap.createBitmap(tmp.cols(), tmp.rows(), Bitmap.Config.ARGB_8888);
    Utils.matToBitmap(tmp, imageToShow);
于 2013-05-05T15:35:29.617 に答える
0

画像が8ビット/カラーRGBAであると仮定して、ビットマップをロードしようとしています。それでよろしいですか?

于 2012-12-05T16:59:25.390 に答える
0

また、ARGBはRGBAではないことに注意してください。各ピクセルのバイトを再配置する必要がある場合があります。何かのようなもの

int pixel = get_the_pixel();
int alpha = 0xff & pixel;
pixel = pixel<<8 | alpha;
set_the_pixel(pixel);

ここに示されているアクセサメソッドよりも効率的な方法を実行する必要がありますが、そのアイデアは得られます。

于 2012-12-05T17:10:00.030 に答える