Java 中JNI调用Opencv : Bitmap和Mat相互转换

在使用Java调用Opencv函数时,无可避免地会使用到Bitmap和Mat的相互转换。

依赖

在CmakeList.txt中添加jingraphics依赖库

Java 中JNI调用Opencv : Bitmap和Mat相互转换_第1张图片

Bitmap转Mat

#define ASSERT(status, ret)     if (!(status)) { return ret; }
#define ASSERT_FALSE(status)    ASSERT(status, false)

bool BitmapToMat(JNIEnv * env, jobject obj_bitmap, cv::Mat & matrix) {
    void * bitmapPixels;
    AndroidBitmapInfo bitmapInfo;

    ASSERT_FALSE( AndroidBitmap_getInfo(env, obj_bitmap, &bitmapInfo) >= 0);
    ASSERT_FALSE( bitmapInfo.format == ANDROID_BITMAP_FORMAT_RGBA_8888
                  || bitmapInfo.format == ANDROID_BITMAP_FORMAT_RGB_565 );
    ASSERT_FALSE( AndroidBitmap_lockPixels(env, obj_bitmap, &bitmapPixels) >= 0 );
    ASSERT_FALSE( bitmapPixels );

你可能感兴趣的:(Image,Processing,Java)