2016-09-27 28 views
5

我工作的用于对象跟踪的一个项目,其中我正在从激光雷达传感器(加福-Fuchs的R2000)(以毫米和振幅的距离)的数据。 使用OpenGL和C++我在linux机器上显示数据。
enter image description here 现在我想根据距离将这些点分组。 我不知道如何将所有的集群放在单独的容器中的c + +? 有没有可能将OpenGL的输出数据用作OpenCV中的输入数据进行对象跟踪?数据聚类++用openGL

+0

您可以将图像添加到问题中。 – ChronoTrigger

回答

5

您应该将OpenGL数据转换为OpenCV结构。 OpenCV中有一些内置函数用于共享数据,look here。您也可以将OpenGL点复制到OpenCV Mat或OpenCV cv::Point3f的矢量中。如何做到这一点取决于你的点所代表的OpenGL结构。如果你必须将矩阵从OpenGL转换为OpenCV,考虑到OpenGL以列 - 主要顺序存储矩阵,而OpenCV的行主要顺序。

然后,OpenCV提供一些(有限的)clustering solutions。 根据您的应用程序,k-means可能有效,但我建议您也查看其他群集技术,例如QuickShift或DBSCAN。

1

您可以使用Map(或根据您的使用2)函数(或[Point_]或[KeyPoint])轻松映射OpenCV中的所有数据。
之后,我建议使用DBSCAN,因为它基于密度工作,不需要群集数量(因为我不认为你可以在这里预定义数量的群集),就像K-Means一样。

注意:您可以在互联网上轻松找到DBSCAN的C++代码。