点云技术相关产学研社区

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

扫一扫,访问微社区

查看: 2343|回复: 0

生成PCD文件时遇到的问题

[复制链接]
发表于 2016-11-22 10:58:19 | 显示全部楼层 |阅读模式
我想在生成PCD文件时利用系统时间构造文件名,代码如下所示(Qt5.4.1 MSVC 2010  +  PCL1.8.0):

#include <QCoreApplication>
#include <QDateTime>
#include <iostream>
#include <pcl/io/pcd_io.h>
#include <pcl/point_types.h>

int main(int argc, char *argv[])
{
      QCoreApplication a(argc, argv);
      
      std::string s = QDateTime::currentDateTime().toString("yyyy.MM.dd hh:mm:ss").toStdString();
      std::string t = "dev1 " + s + ".pcd";

      pcl::PointCloud<pcl::PointXYZ>::Ptr cloud (new pcl::PointCloud<pcl::PointXYZ>);
      cloud->width = 5;
      cloud->height = 1;
      cloud->points.resize(cloud->width * cloud->height);
      for(int i = 0; i < cloud->points.size(); i++)
      {
            cloud->points[i].x = 1024 * rand() / (RAND_MAX + 1.0f);
            cloud->points[i].y = 1024 * rand() / (RAND_MAX + 1.0f);
            cloud->points[i].z = 1024 * rand() / (RAND_MAX + 1.0f);
      }

      pcl::io::savePCDFileASCII(t, *cloud);                   //方式1

      //std::string* tt = new std::string(t);                  //方式2
      //pcl::io::savePCDFileASCII(*tt, *cloud);

      //pcl::PCDWriter writer;                                      //方式3
      //writer.write(t, *cloud);
}

以上三种方式都会出错,出错处为pcd_io.hpp中第480行
template<type PointT> int
pcl::PCDWrter::wrteASCII (const std::string &file_name, const pcl::PointCloud<PointT> &cloud, const int precision)

if(!fs.is_open() || fs.fail())
{
      throw pcl::IOException ("[pcl::PCDWrter::writeASCII] Could not open file for writing!");
      return (-1);
}
抛出异常这一行

可能只是个小问题,但是实在没有搞清楚问题出在哪儿。如果用字符串常量替换变量t,程序可以正常运行。希望论坛中的大神可以指点迷津!谢谢!
回复

使用道具 举报

本版积分规则

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

GMT+8, 2024-4-27 22:01 , Processed in 2.349923 second(s), 16 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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