点云技术相关产学研社区

 找回密码
 立即注册加入PCL中国点云技术相关产学研社区

扫一扫,访问微社区

查看: 6374|回复: 12

光盘中点云可视化的程序,提示找不到文件

[复制链接]
发表于 2013-7-4 15:43:55 | 显示全部楼层 |阅读模式
本帖最后由 xszsn 于 2013-7-10 09:35 编辑

问题来源:《点云库学习教程》 P153-155          7.3节           点云可视化实例解析

用cmd运行程序提示找不到相应的pcd文件,请问怎样解决,谢谢

图片对应的路径分别是:

1.
pcl::io::loadPCDFile ("E:\\PCL book source\\PCL book\\7\\\7 chapter example code\\1 cloud_viewer\\source\\maize.pcd", *cloud);


2.
网上下的源码中写的是:

pcl::io::loadPCDFile ("maize.pcd", *cloud);

运行exe显示找不到cloud not find file "maize.pcd"



附图:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册加入PCL中国点云技术相关产学研社区

x
回复

使用道具 举报

 楼主| 发表于 2013-7-4 15:45:07 | 显示全部楼层
附上源码:


#include <pcl/visualization/cloud_viewer.h>
#include <iostream>
#include <pcl/io/io.h>
#include <pcl/io/pcd_io.h>
   
int user_data;
void
viewerOneOff (pcl::visualization::PCLVisualizer& viewer)
{
    viewer.setBackgroundColor (1.0, 0.5, 1.0);
    pcl::PointXYZ o;
    o.x = 1.0;
    o.y = 0;
    o.z = 0;
    viewer.addSphere (o, 0.25, "sphere", 0);
    std::cout << "i only run once" << std::endl;
   
}
   
void
viewerPsycho (pcl::visualization::PCLVisualizer& viewer)
{
    static unsigned count = 0;
    std::stringstream ss;
    ss << "Once per viewer loop: " << count++;
    viewer.removeShape ("text", 0);
    viewer.addText (ss.str(), 200, 300, "text", 0);
    //FIXME: possible race condition here:
    user_data++;
}
   
int
main ()
{
    pcl::PointCloud<pcl::PointXYZRGBA>::Ptr cloud (new pcl::PointCloud<pcl::PointXYZRGBA>);
    pcl::io::loadPCDFile ("E:\\PCL book source\\PCL book\\7\\\7 chapter example code\\1 cloud_viewer\\source\\maize.pcd", *cloud);
    pcl::visualization::CloudViewer viewer("Cloud Viewer");   
    //showCloud函数是同步的,在此处等待直到渲染显示为止
    viewer.showCloud(cloud);
    //该注册函数在可视化时只调用一次
    viewer.runOnVisualizationThreadOnce (viewerOneOff);
    //该注册函数在渲染输出时每次都调用
    viewer.runOnVisualizationThread (viewerPsycho);
    while (!viewer.wasStopped ())
    {
    //在此处可以添加其他处理
    user_data++;
    }
    return 0;
}
回复 支持 反对

使用道具 举报

发表于 2013-7-4 21:02:22 | 显示全部楼层
把PCD文件放在bin目录里面。你是放在source里面的吧
回复 支持 反对

使用道具 举报

发表于 2013-7-10 08:58:49 | 显示全部楼层
把.pcd文件从source里面拷贝到 你建的那个Cmake_bin目录下面就可以了 ,但愿对你有帮助
回复 支持 反对

使用道具 举报

发表于 2013-7-10 09:00:11 | 显示全部楼层
你的路径太长了,搞个短的,别那么多空格,据对路径容易出错。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-7-10 09:00:58 | 显示全部楼层
网上下的源码中写的是:
pcl::io::loadPCDFile ("maize.pcd", *cloud);
运行exe显示找不到cloud not find file "maize.pcd"

我把代码改为了绝对路径:
pcl::io::loadPCDFile ("E:\\PCL book source\\PCL book\\7\\\7 chapter example code\\1 cloud_viewer\\source\\maize.pcd", *cloud);

运行exe后出现了1楼图中的结果,还是找不到文件。


谁知道该怎么解决?
回复 支持 反对

使用道具 举报

发表于 2013-7-10 09:02:00 | 显示全部楼层
另外 你写得那个路径也不对,怎么说也应该是一个"/",而不是"//",不知我记得对不对,仅供参考
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-7-10 09:11:42 | 显示全部楼层
花非花 发表于 2013-7-10 08:58
把.pcd文件从source里面拷贝到 你建的那个Cmake_bin目录下面就可以了 ,但愿对你有帮助 ...

我把cmake编译后的工程放在.....\build文件夹中了,您的意思是把source文件夹提供的maize.pcd也放到build文件夹中吗?   

我试了一下,好像也不行。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-7-10 09:38:34 | 显示全部楼层
guohaolys 发表于 2013-7-10 09:00
你的路径太长了,搞个短的,别那么多空格,据对路径容易出错。

我又试了一次,这次就用了网上下的源码:“pcl::io::loadPCDFile ("maize.pcd", *cloud);”

还是不行。提示找不到pcd。(1楼中有图片。
回复 支持 反对

使用道具 举报

发表于 2013-7-10 10:08:59 | 显示全部楼层
把pcd文件放到debug文件下
回复 支持 反对

使用道具 举报

本版积分规则

QQ|小黑屋|点云技术相关产学研社区 ( 陕ICP备13001629号 )

GMT+8, 2024-5-15 06:07 , Processed in 1.172442 second(s), 17 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表