首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android OpenCV Highgui.imread颜色错误

Android OpenCV Highgui.imread颜色错误
EN

Stack Overflow用户
提问于 2012-12-06 00:32:32
回答 3查看 1.6K关注 0票数 0

我有代码从SD卡加载图像,并将其发布到ImageView。

代码语言:javascript
复制
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

我尝试通过以下方式加载图像

代码语言:javascript
复制
Bitmap bmp = BitmapFactory.decodeFile(dir);

它工作正常。但我必须使用Highgui.imread

我的代码有什么问题?

EN

回答 3

Stack Overflow用户

发布于 2013-05-05 23:35:30

你将不得不使用类似这样的东西:

代码语言:javascript
复制
    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);
票数 3
EN

Stack Overflow用户

发布于 2012-12-06 00:59:25

你正在尝试加载一个位图,假设图像是8位/彩色RGBA:你确定吗?

票数 0
EN

Stack Overflow用户

发布于 2012-12-06 01:10:00

另请注意,ARGB不是RGBA。您可能需要重新排列每个像素的字节。就像这样

代码语言:javascript
复制
int pixel = get_the_pixel();
int alpha = 0xff & pixel;
pixel = pixel<<8 | alpha;
set_the_pixel(pixel);

您可能想要做一些比这里所示的访问器方法更有效的事情,但是您得到了这个想法。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13727899

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档