您好,我在学习您专栏中的问题时遇到了如下问题;
进行了matlab 基于欧氏距离的点云聚类分割
clc;clear;
% 加载点云数据
ptCloud = pcread('iScan-Pcd-1-1统计滤波点云.pcd');
%参数设置
minDistance = 0.2; % 两个不同聚类团点之间的最小欧氏距离。
minPoints = 10; % 每个集群中的最小点数。
maxPoints = 100000; % 每个集群中的最大点数。
%欧式聚类
[labels,numClusters] = pcsegdist(ptCloud,minDistance, ...
'NumClusterPoints',[minPoints,maxPoints], ...
'ParallelNeighborSearch',true);
%分割结果分类保存
for num=1:numClusters
idxPoints = find(labels==num); % 根据分类标签查找同一个类里的点
segmented = select(ptCloud,idxPoints); % 根据同类点索引提取点
filename = strcat('European_cluster_',num2str(num),'.pcd');
pcwrite(segmented,filename,'Encoding','binary'); % 保存结果到本地文件夹
end
% 对不同的类进行颜色渲染
idxValidPoints = find(labels);
labelColorIndex = labels(idxValidPoints);
segmentedPtCloud = select(ptCloud,idxValidPoints);
% 可视化聚类结果
figure
colormap(hsv(numClusters))
pcshow(segmentedPtCloud.Location,labelColorIndex)
title('点云欧式聚类分割')
**错误使用 pcsegdist
输入参数太多。
出错 European (第 9 行)
[labels,numClusters] = pcsegdist(ptCloud,minDistance, ...**
更改了参数设置的值
如何解决:
出错 European (第 9 行)
[labels,numClusters] = pcsegdist(ptCloud,minDistance, ...
使点云成功分割
导致这个问题是因为,matlab 2022b 以下版本的pcsegdist的方法仅支持两个参数输入,升级matlab2022b后问题自然解决。
看不懂你要问什么