JNI 中位图图像的动态 NewObjectArray
Dynamic NewObjectArray of Bitmap Images in JNI
所以我 std::vector<cv::Rect> boundRect
我必须从中创建一个 Mat
图像数组,并通过 JNI
在 Android 代码中使用它。
如果我必须发送单个位图图像,这是有效的代码。
Mat dst= orignal_image(rectObject);
jclass java_bitmap_class = (jclass)env->FindClass("android/graphics/Bitmap");
jmethodID mid = env->GetMethodID(java_bitmap_class, "getConfig", "()Landroid/graphics/Bitmap$Config;");
jobject bitmap_config = env->CallObjectMethod(bitmap, mid);
jobject _bitmap = mat_to_bitmap(env,dst,false,bitmap_config);
AndroidBitmap_unlockPixels(env, bitmap);
return _bitmap;
如何创建 jobjectarray
位图图像?
我解决了-
jobjectArray strarr = env->NewObjectArray(sizeRect, (jclass)env->FindClass("android/graphics/Bitmap"), 0);
for (int i = 0; i < sizeRect; i++)
{
dst = mbgra(boundRect[i]);
jclass java_bitmap_class = (jclass)env->FindClass("android/graphics/Bitmap");
jmethodID mid = env->GetMethodID(java_bitmap_class, "getConfig", "()Landroid/graphics/Bitmap$Config;");
jobject bitmap_config = env->CallObjectMethod(bitmap, mid);
jobject _bitmap = mat_to_bitmap(env,dst,false,bitmap_config);
AndroidBitmap_unlockPixels(env, bitmap);
env->SetObjectArrayElement(strarr, i, _bitmap);
}
return strarr;
所以我 std::vector<cv::Rect> boundRect
我必须从中创建一个 Mat
图像数组,并通过 JNI
在 Android 代码中使用它。
如果我必须发送单个位图图像,这是有效的代码。
Mat dst= orignal_image(rectObject);
jclass java_bitmap_class = (jclass)env->FindClass("android/graphics/Bitmap");
jmethodID mid = env->GetMethodID(java_bitmap_class, "getConfig", "()Landroid/graphics/Bitmap$Config;");
jobject bitmap_config = env->CallObjectMethod(bitmap, mid);
jobject _bitmap = mat_to_bitmap(env,dst,false,bitmap_config);
AndroidBitmap_unlockPixels(env, bitmap);
return _bitmap;
如何创建 jobjectarray
位图图像?
我解决了-
jobjectArray strarr = env->NewObjectArray(sizeRect, (jclass)env->FindClass("android/graphics/Bitmap"), 0);
for (int i = 0; i < sizeRect; i++)
{
dst = mbgra(boundRect[i]);
jclass java_bitmap_class = (jclass)env->FindClass("android/graphics/Bitmap");
jmethodID mid = env->GetMethodID(java_bitmap_class, "getConfig", "()Landroid/graphics/Bitmap$Config;");
jobject bitmap_config = env->CallObjectMethod(bitmap, mid);
jobject _bitmap = mat_to_bitmap(env,dst,false,bitmap_config);
AndroidBitmap_unlockPixels(env, bitmap);
env->SetObjectArrayElement(strarr, i, _bitmap);
}
return strarr;