机器人社区。我是一名新手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上找到的所有内容,但仍然无法正常工作。我快要疯了。
提前谢谢!