C++ OpenCV';中的参数'Distance d=Distance()'是什么;s层次聚类函数?
我已经讨论了一些问题、源代码和其他示例,但我始终无法理解C++ OpenCV';中的参数'Distance d=Distance()'是什么;s层次聚类函数?,c++,opencv,C++,Opencv,我已经讨论了一些问题、源代码和其他示例,但我始终无法理解Distance d=Distance()参数在函数中的含义 在的评论中有提到,但我在任何地方都找不到距离类型。我已导入以下文件: #include "opencv2/contrib/contrib.hpp" #include "opencv2/core/core.hpp" #include "opencv2/highgui/highgui.hpp" #include "opencv2/imgproc/imgproc.hpp" #incl
Distance d=Distance()
参数在函数中的含义
在的评论中有提到,但我在任何地方都找不到距离类型。我已导入以下文件:
#include "opencv2/contrib/contrib.hpp"
#include "opencv2/core/core.hpp"
#include "opencv2/highgui/highgui.hpp"
#include "opencv2/imgproc/imgproc.hpp"
#include "opencv2/video/tracking.hpp"
#include "opencv2/nonfree/features2d.hpp"
#include "opencv2/flann/flann.hpp"
我已检查了cv
、cvflann
和cv::flann
名称空间,但找不到任何内容
这是我的密码:
int tmp = cv::flann::hierarchicalClustering<cv::L2<float>>(descriptors, centers, params, ______ );
int tmp=cv::flann::hierarchicalClustering(描述符、中心、参数等);
_uu uu显然是最后一个参数的位置。我尝试过类似于cv::L2()
的方法,但也不起作用
在源代码中,它看起来像一个模板
我也试过:
int tmp = cv::flann::hierarchicalClustering<float, float>(descriptors, centers, params);
int tmp=cv::flann::hierarchycalclustering(描述符、中心、参数);
我得到的错误“没有重载函数的实例”cv::flann::hierachicalClustering与参数列表匹配
我正在使用OpenCV 2.4.11
有什么想法吗
中还有更多文档。它看起来像是逐字复制到OpenCV中的。参数
Distance d=Distance()
是设置距离算法的默认方法参数。通常,这将是FLANN\u DIST\u L2
。为什么找不到Distance
“类型“任何地方都是因为它实际上是一个typename
。OpenCV选择使用C++专门化(通过模板)而不是继承来确保不同的距离函数具有相同的特性。
这是一个非平凡的主题,因此应该提供一个相当轻松的介绍。如果我能激起你的食欲,请看安德烈·亚历山德雷斯库的《种子》杂志。添加这篇文章以供将来参考,因为我自己也在为OpenCV FLANN课程苦苦挣扎 这对我很有用:
// define parameters
cvflann::KMeansIndexParams kmeansParams(10, 100, cvflann::FLANN_CENTERS_KMEANSPP);
// note cvflann - not cv::flann - namespace there
int nClusters = flann::hierarchicalClustering<flann::L2<float>>(samples, centers, kmeansParams );
// note regular flann namespace here
//定义参数
cvflann::KMeansIndexParams kmeansParams kmeansParams(10100,cvflann::FLANN_CENTERS_KMEANSPP);
//注意这里的cvflann-不是cv::flann-名称空间
int nClusters=flann::hierarchycalclustering(样本、中心、kmeansParams);
//注意这里的常规flann名称空间
问题是marcman使用的是
而不是
flann名称空间非常混乱,而且缺少文档
由于模板的存在,在IDE中很难找到它。太棒了,谢谢!这是一个很好的解释,我想花点时间看一下细节,但是,在短期内,有什么样的例子可以说明这一点?我尝试了
int tmp=cv::flann::hierarchycalclustering(描述符、中心、参数、cvflann::flann\u DIST\u L2)代码>但不是luck@marcman:有关完整列表,请参见defines.h
,您应该能够使用FLANN_DIST_MANHATTAN
,FLANN_DIST_L1
,FLANN_DIST_MINKOWSKI
。我尝试了cvflann::FLANN_DIST_L2(我编辑了上述注释),但它仍然表示不受支持。很明显,法兰距离在那里是不合适的。@marcman:我没有设置OpenCV,所以我不能自己测试东西,但是读了一些,由于一些重构问题,似乎不可能设置不同的距离度量。类似于flann::hierarchycalclustering
的方法是否有效?它不起作用。唉,我认为这个问题可能超过我的理解深度,只要C++(和PLS一般)就可以了。我将把这个问题留在这里,也许其他人已经解决了它,但在此期间,我将尝试一种不同的集群解决方案。谢谢你的帮助!