پاسخ داده شده: تبدیل Bitmap به cv::Mat در JNI
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; }