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) { retu ECV_BITMAPINFO_ERROR; } if ( bitmap_info.format != ANDROID_BITMAP_FORMAT_RGBA_8888 ) { retu ECV_BITMAPINFO_NOT_RGBA_ERROR; } if ((ret = AndroidBitmap_lockPixels(env, obj_bitmap, &bitmap_pixels)) < 0) { retu ECV_BITMAP_LOCK_ERROR; } if (bitmap_pixels == 0){ retu 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 retu ECV_OK;
}
+ نوشته شده در دوشنبه 13 بهمن 1399 ساعت: 20:50 توسط محمد رضا جوادیان
برچسب ها:
|