gpt4 book ai didi

java - 位图到 Mat 返回错误的颜色

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:00:34 26 4
gpt4 key购买 nike

所以我用下面的代码从一个 blob 中制作了一个位图:

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

它返回下一个输出,这很好

enter image description here

然后我执行以下操作将位图制作成垫子,但随后我的颜色发生了变化...

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

我不知道为什么,也不知道另一种将位图制作成垫子的方法。怎么了? enter image description here

最佳答案

Android Bitmap 中颜色 channel 的格式是RGB但在 opencv Mat 中, channel 默认为 BGR

因此,当您执行 Utils.bitmapToMat() 时,[B,G,R] 值存储在 [R,G,B] channel 中。红色和蓝色 channel 互换。

一种可能的解决方案是在您获得的 opencv Mat 上应用 cvtcolor,如下所示:Imgproc.cvtColor(ImageMat, ImageMat, Imgproc.COLOR_BGR2RGB);

它对我有用。

关于java - 位图到 Mat 返回错误的颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16629707/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com