我在android中有一个ARGB格式的位图
Bitmap bitmapRGB=Bitmap.createBitmap(capturedImageMat.cols(),capturedImageMat.rows(),Bitmap.Config.ARGB_8888);
我将此图像发送到 Android NDK 部分,以使用 C++ 中的 Opencv libaray 处理图像。现在我想将ARGB格式更改为RGB格式,然后将其更改为BGR,因为Opencv使用BGR格式。起初我想使用opencv中的cvtColor方法进行更改,但没有ARGB2RGB转换。我还尝试看看opencv团队如何在github中更改BGRA2BGR并在此基础上编写代码来更改ARGB2RGB,但在opencv源代码中找不到该函数。
最佳答案
正如@Yirga指出的,OpenCV的Utils.bitmapToMat()
默认将ARGB8888
位图转换为RGBA
Mat。
因此,将 ARGB8888
Android Bitmap 转换为 RGB
OpenCV Mat 的完整 Java 解决方案是:
Bitmap imageFromAndroid = ... ; // Whatever you have
Mat cvMatRGB = new Mat();
Utils.bitmapToMat(imageFromAndroid, cvMatRGB);
Imgproc.cvtColor(cvMatRGB, cvMatRGB, Imgproc.COLOR_RGBA2RGB);
进口:
import android.graphics.Bitmap;
import org.opencv.core.Mat;
import org.opencv.android.Utils;
import org.opencv.imgproc.Imgproc;
关于android - 如何将Android ARGB图像格式转换为opencv中使用的RGB图像格式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44501079/