android - 使用带有 Android NDK 的 OpenCV 转换数据格式

标签 android c++ opencv android-ndk

我正在尝试查看从 opencv 函数 knn 返回的响应。我试过像大多数示例所示那样使用 cout 函数,但这在 Android NDK 中不起作用。

响应应该是 3 个值,[1,2,3],当我执行 response.cols 时,答案是 3 所以我知道数据在那里,但我找不到正确的格式来打印或检查数据以查看是否返回了正确的响应。

从 knn->findNearest 返回的值“response”的格式为 OutputArray。

我已经尝试了以下方法,但它们输出了奇怪的数据:

int K=3;
Mat response;
Mat dist;
knn->findNearest(testFeature, K, noArray(), response, dist);

int *responseToInt = (int*)response.data;
int nearestNeighbors[3];

for(int i = 0; i < response.cols; i++){
    nearestNeighbors[i] = responseToInt[i];
}

输出:

最近的邻居[0] = 1077936128

最近的邻居[1] = 1077936128

最近的邻居 [2] = 1077936128

int K=3;
Mat response;
Mat dist;

knn->findNearest(testFeature, K, noArray(), response, dist);

uchar* responseToChar = response.data;
char nearestNeighbors[3] = "";
for(int i = 0; i < response.cols; i++){
    nearestNeighbors[i] = responseToChar[i];
}

输出:

最近的邻居[0] =\0

最近的邻居[1] =\0

最近的邻居[2] = @

最佳答案

您可以在其文档中查看函数返回的内容。例如看看 findNearest

neighborResponses – Optional output values for corresponding neighbors. It is a single-precision floating-point matrix of * k size.

注意单精度 float

这意味着结果是 Mat,数据存储为 float,这意味着您可以访问其数据

float* res = (float*)response.data;

关于android - 使用带有 Android NDK 的 OpenCV 转换数据格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48007877/

相关文章:

android - 输入类型 ="file"接受 ="image/*"捕获 ="camera"不适用于移动设备

java - 我可以在 Eclipse 中使用 Android SDK Java 为平板电脑开发吗?

c# - 从 C# 调用 libyahoo2 函数

python - 将 Mp3 添加到 VideoFileClip MoviePy 时没有音频

c++ - 在 OpenCV 中从点云到图像的项目点

android - 无法使用 cv::imwrite 在 JNI 中将图像写入 Android 文件系统

android - Realm:根据列表属性包含特定元素进行查询

c++ - XCode 调试器 lldb 在没有错误输出的情况下中断,但程序运行正常

c++ - 如何创建多维多类型 C++ vector ?

opencv - 进行人脸识别的最先进方法是什么?