Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Opencv 如何访问cv::flann KNN搜索找到的最近邻居?_Opencv_Knn_Flann - Fatal编程技术网

Opencv 如何访问cv::flann KNN搜索找到的最近邻居?

Opencv 如何访问cv::flann KNN搜索找到的最近邻居?,opencv,knn,flann,Opencv,Knn,Flann,或者说,弗兰恩也有可能吗?我不是最有经验的程序员,我也可能忽略了一些真正基本的东西(C++,OpenCV 2.4.3) 问题是: 我有两个点云,想计算一个置换贴图。我尝试使用flann.lib从第二个云的点获取第一个云中的点的最近邻,并使用它们和距离来计算位移向量 到目前为止,我得到的是: int nn = 1; cv::Mat MyIndex(data1.size(),3,CV_64FC1); cv::Mat MyQuery(data2.size(),3,CV_64FC1); cv::Mat

或者说,弗兰恩也有可能吗?我不是最有经验的程序员,我也可能忽略了一些真正基本的东西(C++,OpenCV 2.4.3)

问题是:

我有两个点云,想计算一个置换贴图。我尝试使用flann.lib从第二个云的点获取第一个云中的点的最近邻,并使用它们和距离来计算位移向量

到目前为止,我得到的是:

int nn = 1;
cv::Mat MyIndex(data1.size(),3,CV_64FC1);
cv::Mat MyQuery(data2.size(),3,CV_64FC1);
cv::Mat indices(data2.size(),1,CV_32SC1);
cv::Mat distances(data2.size(),3,CV_64FC1);

cv::flann::Index_<double> NN_Index(MyIndex, cvflann::KDTreeIndexParams(4));
NN_Index.knnsearch(MyQuery,indices,distances,nn,cvflann::SearchParams(32));
int nn=1;
cv::Mat MyIndex(data1.size(),3,cv_64FC1);
cv::Mat MyQuery(data2.size(),3,cv_64FC1);
cv::Mat索引(data2.size(),1,cv_32SC1);
cv::垫距离(数据2.size(),3,cv_64FC1);
cv::flann::Index_NN_uindex(MyIndex,cvflann::KDTreeIndexParams(4));
knnsearch(MyQuery,Index,distance,NN,cvflann::SearchParams(32));
据我所知,它可以工作,我得到了距离,我得到了查询点,我得到了索引。但是如何从索引中获得与查询点匹配的实际点呢

我查看了flann.hpp,但没有找到任何提示。我把MyIndex、NN_Index和索引弄得乱七八糟,但没有得到任何有用的结果。

试试看

for (int queryIdx = 0; queryIdx < MyQuery.rows; ++queryIdx) {
  int dbIdx = indices.at<int>(queryIdx, 0);
  std::cout<<"Query Idx:"<<queryIdx<<" matched to "<<"Database Idx:"<<dbIdx<<std::endl;
}
for(int queryIdx=0;queryIdxcout