C++ 如何使用OpenCV为Flann索引定义SURF描述符
我正在使用Visual Studio 2013和OpenCV 2.4.10 我为数据库的每个图像创建描述符,并存储在C++ 如何使用OpenCV为Flann索引定义SURF描述符,c++,opencv,concat,descriptor,C++,Opencv,Concat,Descriptor,我正在使用Visual Studio 2013和OpenCV 2.4.10 我为数据库的每个图像创建描述符,并存储在Mat*的CList中。 然后我必须为flann索引创建一个全局描述符 我的问题是如何合并、合并这些描述符以用于Flann索引 我就是这么做的: Mat*ConcatDescriptors(CList<Mat*, Mat*> *descsList) { POSITION position = descsList->GetHeadPosition();
Mat*
的CList
中。
然后我必须为flann索引创建一个全局描述符
我的问题是如何合并、合并这些描述符以用于Flann索引
我就是这么做的:
Mat*ConcatDescriptors(CList<Mat*, Mat*> *descsList) {
POSITION position = descsList->GetHeadPosition();
Mat* concatedDescs = new Mat();//the final descriptor
position = descsList->GetHeadPosition();
while (position)
{
concatedDescs->push_back(descsList->GetNext(position));
}
descsList->RemoveAll();
return concatedDescs;
}
Mat*concatdescriptor(CList*descsList){
POSITION POSITION=descsList->GetHeadPosition();
Mat*concatedDescs=new Mat();//最终描述符
位置=描述列表->获取头部位置();
while(位置)
{
concatedDescs->push_back(descsList->GetNext(位置));
}
descsList->RemoveAll();
返回concatedescs;
}
最终结果只是向量中重复的一个值。就像旁注一样-请避免使用指向cv::Mat的指针。使用(垫头)的参考或副本。它已经是一个smartpointer,不打算与指针一起使用。另外,您可能希望将cv::Mat推送到concatenatedDesc,而不是指向它的指针。opencv中的vconcat如何?“矩阵的大小是num_features x feature_dimensionality”-因此,应该是hconcat。使用Mat而不是Mat*使用相同的代码解决了问题。