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
C++ 如何使用OpenCV为Flann索引定义SURF描述符_C++_Opencv_Concat_Descriptor - Fatal编程技术网

C++ 如何使用OpenCV为Flann索引定义SURF描述符

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

我正在使用Visual Studio 2013和OpenCV 2.4.10

我为数据库的每个图像创建描述符,并存储在
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*使用相同的代码解决了问题。