تبدیل Bitmap به cv::Mat در JNI - هفت خط کد انجمن پرسش و پاسخ برنامه نویسی

تبدیل Bitmap به cv::Mat در JNI

0 امتیاز
سلام. من تصویر را  به صورت اندروید Bitmap در سمت جاوا دارم چطور Bitmap را پاس بدم به JNI‌ و به cv::Mat‌تبدیلش کنم؟
سوال شده شهریور 14, 1399  بوسیله ی yousef (امتیاز 41)   2 10 12

1 پاسخ

+1 امتیاز
 
بهترین پاسخ
int BitmapToMat(JNIEnv * env, jobject obj_bitmap, cv::Mat & matrix) {
    void * bitmap_pixels;                                            // Save picture pixel data
    AndroidBitmapInfo bitmap_info;                                   // Save picture parameters


    int ret;
    if ((ret = AndroidBitmap_getInfo(env, obj_bitmap, &bitmap_info)) < 0)
    {
        return ECV_BITMAPINFO_ERROR;
    }
    if ( bitmap_info.format != ANDROID_BITMAP_FORMAT_RGBA_8888 )
    {
        return ECV_BITMAPINFO_NOT_RGBA_ERROR;
    }

    if ((ret = AndroidBitmap_lockPixels(env, obj_bitmap, &bitmap_pixels)) < 0)
    {
        return ECV_BITMAP_LOCK_ERROR;
    }
    if (bitmap_pixels == 0){
        return ECV_BITMAP_PIXEL_ERROR;
    }

    cv::Mat tmp(bitmap_info.height, bitmap_info.width, CV_8UC4, bitmap_pixels);    // Establish temporary mat
    cv::cvtColor(tmp,matrix,cv::COLOR_BGRA2BGR);
    //tmp.copyTo(matrix);                                                         // Copy to target matrix

    AndroidBitmap_unlockPixels(env, obj_bitmap);            // Unlock

    return ECV_OK;
}

 

پاسخ داده شده آذر 20, 1399 بوسیله ی مصطفی ساتکی (امتیاز 21,998)   24 34 75
انتخاب شد اردیبهشت 18, 1400 بوسیله ی yousef
...