从特定字符串读取 PLY 文件

Reading a PLY file from a specific string

我想按照 question. Sample PLY file is given here 中的建议,使用 dlmread 函数从字符串 end_header 的下一行开始将 PLY 文件读入 MATLAB 矩阵。目前起始行硬编码如下,但不适合,因为 PLY 文件中的 header 行数可能会更改。

data = dlmread(fileName, ' ', 14, 0);

有多种不同的方法可以做到这一点。一种选择是使用 textscan to read in the entire file and a mix of strfind and find 来确定包含 'end_header' like

的行
filename = 'testPly.ply';

fid = fopen(filename);
data = textscan(fid, '%s', 'delimiter', '\n');
idx = find(cellfun(@isempty, strfind(data{1}, 'end_header')) == 0);
fclose(fid);

那么你可以使用dlmread作为

data = dlmread(filename, ' ', idx, 0);

或者根据我的提取数值数据。


另一种方法,如果您的文件在 'end_header' 之后包含大量数据但在读取每一行之前不包含很多数据,这可能会更好,直到您使用 [=25 找到 'end_header' =]

idx = 1;
fid = fopen(filename, 'r');
while isempty(strfind(fgets(fid), 'end_header'))
    idx = idx + 1;
end
fclose(fid);

然后使用dlmread或者根据我的提取数值数据。