Matlab读取.txt点云并显示

1、读取.ply文件

%read ply file
ptcloud=pcread('horse.ply');
ptcloud.Color(:,1)=125;%1
ptcloud.Color(:,2)=50;%2
ptcloud.Color(:,3)=200;%3
pcshow(ptcloud);
title('handsome horse');

2、读取.txt文件

%read txt file
bowl=importdata('bowl_0001.txt');
%[cx.cy]=size(pcchair);
x=bowl(:,1);
y=bowl(:,2);
z=bowl(:,3);
%subplot(2,2,2);
plot3(x,y,z,'.');
title('bowl');
grid on

在这里插入图片描述
在这里插入图片描述
3、将ply文件转化为.txt文件

%函数功能   
%读取当前目录下的所有ply格式点云文件,显示图像,输出为同名称的txt格式文件

path=pwd;       %当前所在目录
file = dir(fullfile(path,'*.ply'));    %读取所有ply格式文件
filenames = {file.name}';
filelength = size(filenames,1);        %ply格式文件数

for idx = 1 : filelength               %批处理
    filedir = strcat(path, filenames(idx));
    ptcloud=pcread(filenames{idx});   %ply格式文件用pcread读取
    figure;
    pcshow(ptcloud);
    xlabel('X');
    ylabel('Y');
    zlabel('Z');
    title(filenames{idx});
    Data(:,1)= double(ptcloud.Location(1:5:end,1));   %提取所有点的三维坐标
    Data(:,2)= double(ptcloud.Location(1:5:end,2));
    Data(:,3)= double(ptcloud.Location(1:5:end,3)); 
    namesplit=strsplit(filenames{idx},'.');           %分割ply文件的名称,分成文件名与ply后缀名
    frontname=namesplit{1};                           %提取文件名,舍弃后缀名
%     fid=fopen(strcat(frontname,'.txt'),'wt');      
    eval(['fid=fopen(''',frontname,'.txt'',''wt'');']);      
    [b1,b2]=size(Data);    
    for i=1:b1                   %将二维数组Data写入txt格式文件中
        for j=1:b2-1
            fprintf(fid,'%.4f\t ',Data(i,j));           %所有坐标数据保留小数点后四位
        end
        fprintf(fid,'%.4f\n',Data(i,b2));
    end
    clear Data;                 
    fclose(fid);
end

4、ModelNet40数据集
在这里插入图片描述
下载完成后,在对于的文件夹下就可以找到我们的数据集,它们都变成了tex文本,每个文件夹下放的都是一个类别。例如,上图打开的就是飞机这个类别的点云数据。每一个txt文件相当于2d图像中的一张图像。
在这里插入图片描述
继续打开可以发现它有很多行数据,每行有6个数据。这里的每行数据表示该图像有多少个点组成,例如1万行就是由1万个点组成的,每行数据的前三个是这个点在空间中的xyz坐标,后三个是这个点的颜色信息。至于他们其中为什么有负数,是因为他们都被压缩到-1,1这个区间内了。

  • 3
    点赞
  • 48
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 以下是 Matlab 读取 txt 点云坐标并显示的代码: ```matlab % 读取 txt 文件 data = load('point_cloud.txt'); % 将数据分成 x、y、z 三个数组 x = data(:, 1); y = data(:, 2); z = data(:, 3); % 绘制点云 scatter3(x, y, z, 10, z, 'filled'); xlabel('X'); ylabel('Y'); zlabel('Z'); title('Point Cloud'); ``` 这段代码会将 `point_cloud.txt` 文件中的点云数据读取出来,并在 3D 坐标系中绘制出来。其中,点的大小和颜色根据点的 z 坐标值来确定。 ### 回答2: 可以使用以下代码来实现在Matlab读取txt点云坐标并显示: ```matlab % 读取txt文件 filename = '点云文件.txt'; point_cloud = dlmread(filename); % 获取点云坐标 x = point_cloud(:, 1); y = point_cloud(:, 2); z = point_cloud(:, 3); % 显示点云 figure; scatter3(x, y, z, 10, 'filled'); xlabel('X'); ylabel('Y'); zlabel('Z'); title('点云'); % 添加坐标轴 grid on ``` 1. 首先,将文件名更改为相应的txt文件名,确保文件在当前工作目录下。 2. 使用`dlmread`函数将txt文件读取Matlab中的`point_cloud`变量中。 3. 从`point_cloud`变量中获取点云的X、Y和Z坐标信息。 4. 创建一个新的图形窗口,并使用`scatter3`函数以三维形式显示点云,其中`10`是点的大小,`'filled'`表示点云为填充形式。 5. 用`xlabel`、`ylabel`和`zlabel`函数为x、y和z轴添加标签。 6. 使用`title`函数为图形添加标题。 7. 最后,使用`grid on`函数添加坐标轴网格。 以上代码将读取txt文件中的点云坐标,并在Matlab显示点云。 ### 回答3: 以下是一个示例代码,可以使用MATLAB读取一个文本文件中的点云坐标并进行显示: ```matlab % 读取txt文件 fid = fopen('pointcloud.txt', 'r'); data = textscan(fid, '%f %f %f'); fclose(fid); % 获取点云坐标 x = data{1}; y = data{2}; z = data{3}; % 显示点云 scatter3(x, y, z, '.'); axis equal; xlabel('X'); ylabel('Y'); zlabel('Z'); title('点云数据'); ``` 前提是文本文件 `pointcloud.txt` 的格式应为每行包含一个点的XYZ坐标,例如: ``` 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 ... ``` 在代码中,首先通过 `fopen` 函数打开文本文件,然后使用 `textscan` 函数读取文件中的数据。接着,用 `scatter3` 函数将读取到的点云数据进行三维显示,其中点的坐标分别使用向量 `x`、`y` 和 `z` 来表示。最后,使用 `axis equal` 设置坐标轴比例一致,并添加坐标轴标签和标题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值