将range_image中的范围值另存为.png文件

时间:2019-02-22 21:53:41

标签: c++ ros point-cloud-library

机器人社区。我是一名新手C ++程序员,正在学习ROS。

当前,我正在尝试根据range_image类创建深度图。我从ROS邮件列表中找到了一个简短的答案,其中显示了如何进行this。但是,似乎方法

pcl::io::saveRgbPNGFile (const std::string &file_name, const unsigned char *rgb_image, int width, int height);

已不存在,因为在编译过程中出现以下错误

error: ‘saveRgbPNGFile’ is not a member of ‘pcl::io’
  pcl::io::saveRgbPNGFile("ha.png", rgb_image, width, height);

以下是用于创建range_image实例并将range字段转换为.png文件的相关部分的片段的一部分

代码段

void ScanHandler::finalize_scan()负责将点云转换为范围图像

void ScanHandler::finalize_scan(){
...
pcl::RangeImage rangeImg;
rangeImg.createFromPointCloud(*m_pcloud, angularResolution, 
                              maxAngleWidth, maxAngleHeight,
                              sensorPose, coordinate_frame, 
                           noiseLevel, minRange, borderSize);
float* data = rangeImg.getRangesArray();
publish_range_img(data, rangeImg.width, rangeImg.height);
}

void ScanHandler::publish_range_img(float* data, int width, int height)负责发布范围图像(该图像由范围值而不是pcl :: RangeImage实例组成)

void ScanHandler::publish_range_img(float* data, int width, int height){
    sensor_msgs::Image msg;
    pcl::toROSMsg(&data, msg); // ERROR!!!!!
    msg.header.frame_id = m_reference_frame();
    msg.width = width;
    msg.height = height;

    m_range_img_pub.publish(msg);
    unsigned char* rgb_image = pcl::visualization::FloatImageUtils::getVisualImage (data, width, height); 
    pcl::io::saveRgbPNGFile("ha.png", rgb_image, width, height); // ERROR
}

问题

当前,主要问题是我无法将范围值成功保存到.png,也未能将其元素的float数组也发布到主题中

我希望有人可以指出正确的方向,因为我已经尝试了可以​​在Internet上找到的所有内容,但仍然无法正常工作。我快要疯了。

提前谢谢!

0 个答案:

没有答案