【发布时间】:2018-05-27 16:11:22
【问题描述】:
我通过Android NDK (using c++) 使用OpenCv
我想将图像保存为 MAT 格式,然后将其显示在我的 android 应用程序上。
我已将图像保存在资产中。 imread() 在 NKD 中不起作用,因为它找不到图像的文件路径,但是,我可以使用 AssetManager 加载资产并且它完美地找到了路径。此方法将数据保存到 char* 缓冲区中。
我该如何使用类似于 imread() 的东西将图像保存到 MAT 中,或者将 char* 缓冲区数据转换为 MAT 以便将其显示在屏幕上,然后使用其他 openCV 函数进行操作?
【问题讨论】:
-
cv::imdecode等效于imread,当您已经在缓冲区中拥有数据时。 -
@Dan Mašek 我的代码格式为: char* buffer = (char*) malloc (sizeof(char)*sizeOfImg); AAsset_read(img, 缓冲区, sizeOfImg);所以生成的缓冲区是 char* 的形式。 imdecode() 需要 const_inputArray 格式的数据。
-
将数据放入
std::vector<char>并使用cv::imdecode -
甚至不必将数据复制到向量中:
cv::_InputArray(buffer,buffer_size)
标签: android c++ opencv android-ndk