c++下使用Open3D进行DBSCAN聚类
#include <string>
#include <Eigen>
#include <Open3D/Open3D.h>
using namespace open3d;
using namespace std;
int main(int argc, char* argv[]) {
//读取点云
std::shared_ptr<geometry::PointCloud> cloud(new geometry::PointCloud);
open3d::io::ReadPointCloud("C:/Users/a/Desktop/1.ply", *cloud);
auto cloud_v = cloud->VoxelDownSample(3.0); //采用体素进行降采样,设置值可根据和点云间距进行设定
std::vector<int> DBSCAN;
DBSCAN = cloud_v->ClusterDBSCAN(2,7,true);
auto maxPosition = max_element(DBSCAN.begin(), DBSCAN.end());
cout << *maxPosition << " at the postion of " << maxPosition - DBSCAN.begin() << endl;
visualization::DrawGeometries({ cloud_v }, "visualization", 960, 900, 960, 100);
return 0;
}