android - 如何将Android ARGB图像格式转换为opencv中使用的RGB图像格式?

标签 android opencv image-processing android-ndk image-formats

我在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位图转换为RGBAMat。

因此,将 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/

相关文章:

android - 如何获取 APN 名称

android - 在 ListView android中更改渐变边缘颜色

java - 如何从 XML 配置实例化 fragment ?

opencv - OpenCV在iOS上可以检测到哪些面部部位?

java - 如何识别图像中的符号

java - Firebase 帮助类

c - 保存mp4视频opencv

.net - 尝试将灰度图像写入 VideoWriter 时 EMGU 崩溃

c++ - 在 ImageMagick 中创建具有字符特定颜色的文本标签

python - 如何在 python 中合并不同维度的数组?