我有代码从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);
图像已加载,但颜色错误。颜色似乎是倒置的(但没有反转)。 这是image comparison
我试图通过
加载图片Bitmap bmp = BitmapFactory.decodeFile(dir);
它工作正常。但我必须使用Highgui.imread
。
我的代码出了什么问题?
答案 0 :(得分: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);
答案 1 :(得分:0)
你正在尝试加载一个位图,假设图像是8位/彩色RGBA:你确定吗?
答案 2 :(得分:0)
另请注意,ARGB不是RGBA。您可能需要重新排列每个像素的字节。像
这样的东西int pixel = get_the_pixel();
int alpha = 0xff & pixel;
pixel = pixel<<8 | alpha;
set_the_pixel(pixel);
你想要做的事情比这里显示的访问者方法更有效,但你明白了。