1

それとも、フランでも可能ですか? 私は最も経験豊富なコーダーではありません。また、本当に基本的なことを見落としている可能性もあります (C++、OpenCV 2.4.3)。

問題 :

2 つのポイント クラウドがあり、ディスプレイスメント マップを計算したいと考えています。flann .lib を使用して、2 番目のクラウドのポイントから最初のクラウドのポイントに最も近いものを取得し、それらと距離を使用して変位ベクトルを計算しようとしています。

これまでに得たものは次のとおりです。

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));

私が知る限り、それは機能します。距離を取得し、クエリポイントを取得し、インデックスを取得しました。しかし、インデックスから、クエリ ポイントに一致した実際のポイントを取得するにはどうすればよいでしょうか。

flann.hpp を調べましたが、実際にはヒントが見つかりませんでした。MyIndex、NN_Index、およびインデックスを少しいじりましたが、有用な結果は得られませんでした。

4

1 に答える 1

0

試す

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;
}
于 2013-06-12T17:10:39.767 に答える