PCD转PLY后不能被3d软件打开的问题

chillystar 2018-06-28 11:19:16
采用的是PCL1.8.0,转换过程是没问题,但转出来的ply不能被win10的3d软件打开,代码如下:

int _PCD2PLY_M3(string pcdPath, string savePath){
pcl::PCLPointCloud2 cloud;
if (loadPCDFile(pcdPath, cloud) < 0)
{
cout << "Error: cannot load the PCD file!!!" << endl;
return -1;
}
PLYWriter writer;
writer.write(savePath,cloud,Eigen::Vector4f::Zero(),Eigen::Quaternionf::Identity(),false,false);
return 0;
}

请大神们搭救!
...全文
1068 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
WannaBreakFree 2021-01-11
  • 打赏
  • 举报
回复 1
没法用3d查看器打开是因为pcd转ply后的ply文件的header不符合标准,其中element face xxx这一行是必须要有的且xxx不能为零
Como0413 2019-11-28
  • 打赏
  • 举报
回复
请问楼主数模转点云数据是怎么转的,求赐教,谢谢
桂林巡山 2019-04-20
  • 打赏
  • 举报
回复
你好,按照你的程序pcl::removeNaNFromPointCloud(*cloud, *cloud, mapping); 会报错,这种情况你有遇到吗/解决办法?
引用 1 楼 League1993 的回复:
本人今天在转换点云数据中也出现了类似的问题,直接转出来的ply文件用Mesh软件打开后一片空白,我开始慌了。 然后打开转换后的数据,大致看了一些,发现很多Null的字符出现,很奇怪。于是用了其他的转换函数,依然是类似情况。 我更慌了!开始在网上查阅函数相关资料,不了有偶然发现,有的博客提及了NaN型的情况,于是仔细阅读,修改代码。 最后,终于把数据转成Mesh可以打开的ply格式文件。 思路:一般的pcd点云数据中包含一些NaN型的节点,直接把pcd转成ply后会继承这些NaN值的,所以3d软件识别节点的NaN失败,打开文件是看不到三维点云的。 解决方法:在转换之前把NaN型的点云过滤掉,然后再转化为ply,就没有问题了,用软件打开后可以看到正常的三维点云形状。 以上代码应修改为:

int _PCD2PLY_M3(string pcdPath, string savePath){
    pcl::PCLPointCloud2 cloud;
    if (loadPCDFile(pcdPath, cloud) < 0)
    {
        cout << "Error: cannot load the PCD file!!!" << endl;
        return -1;
    }
    // remove NaN type points
    //依赖函数 #include <pcl/filters/filter.h>
    std::vector<int> mapping;
    pcl::removeNaNFromPointCloud(*cloud, *cloud, mapping);

    PLYWriter writer;
    writer.write(savePath,cloud,Eigen::Vector4f::Zero(),Eigen::Quaternionf::Identity(),false,false);
    return 0;
}

希望对你有启发! 参考: http://www.cnblogs.com/li-yao7758258/p/6519830.html http://docs.pointclouds.org/1.9.1/group__filters.html#gac463283a9e9c18a66d3d29b28a575064
League1993 2019-02-23
  • 打赏
  • 举报
回复
本人今天在转换点云数据中也出现了类似的问题,直接转出来的ply文件用Mesh软件打开后一片空白,我开始慌了。 然后打开转换后的数据,大致看了一些,发现很多Null的字符出现,很奇怪。于是用了其他的转换函数,依然是类似情况。 我更慌了!开始在网上查阅函数相关资料,不了有偶然发现,有的博客提及了NaN型的情况,于是仔细阅读,修改代码。 最后,终于把数据转成Mesh可以打开的ply格式文件。 思路:一般的pcd点云数据中包含一些NaN型的节点,直接把pcd转成ply后会继承这些NaN值的,所以3d软件识别节点的NaN失败,打开文件是看不到三维点云的。 解决方法:在转换之前把NaN型的点云过滤掉,然后再转化为ply,就没有问题了,用软件打开后可以看到正常的三维点云形状。 以上代码应修改为:

int _PCD2PLY_M3(string pcdPath, string savePath){
    pcl::PCLPointCloud2 cloud;
    if (loadPCDFile(pcdPath, cloud) < 0)
    {
        cout << "Error: cannot load the PCD file!!!" << endl;
        return -1;
    }
    // remove NaN type points
    //依赖函数 #include <pcl/filters/filter.h>
    std::vector<int> mapping;
    pcl::removeNaNFromPointCloud(*cloud, *cloud, mapping);

    PLYWriter writer;
    writer.write(savePath,cloud,Eigen::Vector4f::Zero(),Eigen::Quaternionf::Identity(),false,false);
    return 0;
}

希望对你有启发! 参考: http://www.cnblogs.com/li-yao7758258/p/6519830.html http://docs.pointclouds.org/1.9.1/group__filters.html#gac463283a9e9c18a66d3d29b28a575064
<项目介绍> 该资源内项目源码是个人的毕设,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到94.5分,放心下载使用! 该资源适合计算机相关专业(如人工智能、通信工程、自动化、软件工程等)的在校学生、老师或者企业员工下载,适合小白学习或者实际项目借鉴参考! 当然也可作为毕业设计、课程设计、课程作业、项目初期立项演示等。如果基础还行,可以在此代码基础之上做改动以实现更多功能。 # 基于迁移学习的三维重建系统 ## 点云文件pcd格式 │ ├── plys 点云文件ply格式 │ ├── pngs_depth 生成的深度图 │ └── pngs_rgb 接收的rgb图像 ├── modules 处理模块 │ ├── conf.py │ ├── layers.py │ ├── model.h5 模型文件 │ ├── predict.py │ ├── utils.py │ └── __init__.py ├── static │ ├── css │ ├── js 渲染点云的js脚本 │ └── exhibit └── templates ├── exhibit.html ├── index.html ├── layout.html ├── result.html └── upload.html ``` ## 使用说明 1. 下载深度图预测模型[NYU Depth V2](https://drive.google.com/file/d/19dfvGvDfCRYaqxVKypp1fRHwK7XtSjVu/view?usp=sharing) (165 MB),放置在```/modules/```下改名为model.h5 2. 首先确保服务端和测试端连接同一个局域网,可通过```ipconfig```查看所在局域网IP 3. 修改根目录下```conf.py```配置文件,将```server_model_ip```和```server_3d_ip```改为局域网IP 4. 在根目录下打开终端,输入```python app.py``` 5. 在根目录下打开另一个终端,输入```http-server -p 8080``` 6. 在PC的浏览器或手机浏览器输入 ```局域网IP:5000```,例如```192.168.3.3:5000```,即可使用该系统

7,540

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 VC.NET
社区管理员
  • VC.NET社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧