Преобразование char * в cv :: Mat в NDK Android studio

У меня есть родной метод C ++, который я использую, чтобы прочитать изображение под названием «hi.jpg». Код ниже находит актив и загружает данные в буфер char *. (Я пробовал другие методы, такие как imread (), и файл не найден). Затем я хотел бы преобразовать эти данные в формат Mat, поэтому я следовал некоторым инструкциям, чтобы поместить буфер char * в std :: vector, а затем использовать cv :: imdecode для преобразования данных в Mat.

JNIEXPORT jint JNICALL Java_com_example_user_application_MainActivity_generateAssets(JNIEnv* env,jobject thiz,jobject assetManager) {

AAsset* img;

AAssetManager *mgr = AAssetManager_fromJava(env, assetManager);
AAssetDir* assetDir = AAssetManager_openDir(mgr, "");
const char* filename;

while ((filename = AAssetDir_getNextFileName(assetDir)) != NULL) {
AAsset *asset = AAssetManager_open(mgr, filename, AASSET_MODE_UNKNOWN);

if(strcmp(filename, "hi.jpg")==0 ) {
img = asset;
}
}

long sizeOfImg = AAsset_getLength(img);
char* buffer = (char*) malloc (sizeof(char)*sizeOfImg);
AAsset_read(img, buffer, sizeOfImg);

std::vector<char> data(buffer, buffer + strlen(buffer));

cv::Mat dataToMat = cv::imdecode(data, IMREAD_UNCHANGED);return 0;
}

Моя проблема в том, что я не знаю, как проверить, что данные были успешно преобразованы в Mat. Как я могу проверить это? Я запустил отладчик и проверил dataToMat, но это не имеет особого смысла.

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]