生也有涯,知也无涯。这篇文章主要讲述使用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];
}
输出:
nearestNeighbors [0] = 1077936128
nearestNeighbors [1] = 1077936128
nearestNeighbors [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];
}
【使用OpenCV和Android NDK转换数据格式】输出:
nearestNeighbors [0] =0
nearestNeighbors [1] =0
nearestNeighbors [2] = @
答案您可以在其文档中查看返回的函数。例如,看看findNearest
neighborResponses- 对应邻居的可选输出值。它是* k大小的单精度浮点矩阵。注意单精度浮点数。
这意味着结果是Mat,数据存储为float,这意味着您可以使用它来访问其数据
float* res = (float*)response.data;
推荐阅读
- Android Studio中的Gstreamer示例
- 错误(在Android ndk中使用C的冲突类型)
- Android java.lang.UnsatisfiedLinkError dalvik.system.PathClassLoader
- 使用__android_log_print打印Opencv Mat,Android NDK的内容
- Android JNI - 线程同步
- Facebook Buck(BUILD FAILED:没有检测到原生平台。可能没有正确配置Android NDK)
- 如何在JavaScript中从Twig安全地打印字符串变量
- 为Symfony 1.4中的异常实现自定义500错误页面
- 使用C#和Winforms捕获不同方式的屏幕截图