准备位图 byte[] 数据以传递给 jni

Posted

技术标签:

【中文标题】准备位图 byte[] 数据以传递给 jni【英文标题】:Preparing bitmap byte[] data to pass to jni 【发布时间】:2018-01-07 01:16:06 【问题描述】:

我想通过jni将我的android类中的位图传递给我的native c++类,然后在另一端执行opencv处理。

我不明白如何使用 getPixels 之类的方法准备数据以放入 byte[] 数组。我需要考虑 RGB 吗?

【问题讨论】:

【参考方案1】:

您必须将Bitmap 转换为Matorg.opencv.android.Utils 类具有实用转换方法。它将Bitmap 作为ARGB_8888RGB_565 类型的参数。

import org.opencv.android.Utils;
private void convertToMat(Bitmap bitmap)
    Mat mat = new Mat();
    Bitmap bmp32 = bitmap.copy(Bitmap.Config.ARGB_8888, true);
    Utils.bitmapToMat(bmp32, mat);

这只是一种方式。查看This thread 了解更多信息。谢谢

【讨论】:

以上是关于准备位图 byte[] 数据以传递给 jni的主要内容,如果未能解决你的问题,请参考以下文章

Android开发实践:Java层与Jni层的数组传递

如何在 Android 中使用 JNI 将资产 FileDescriptor 正确传递给 FFmpeg

如何将字节数组从android java类传递给JNI C NDK?

VB.net 如何将数据转换为位图(Bitmap)所需要的byte()数组?急!!!!

JNI程序如何进行参数传递

JNI程序如何进行参数传递