首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用image_transport从ROS中获取摄像机压缩图像

用image_transport从ROS中获取摄像机压缩图像
EN

Stack Overflow用户
提问于 2020-08-28 15:44:01
回答 1查看 3.4K关注 0票数 0

我在turtlebot上使用ROS版本1,我想编写一个C++程序来捕获一个JPEG格式的图像,这样我就可以将图像提供给需要该格式的服务。我正在尝试使用image_transport和compressed_image_transport来实现这一点。看起来基本结构应该是:

代码语言:javascript
运行
复制
#include <image_transport/image_transport.h>
#include <compressed_image_transport/compressed_subscriber.h>

<snip>

void imageCallback(const sensor_msgs::CompressedImage::ConstPtr & msg) { }

<snip>

image_transport::ImageTransport it(n);
compressed_image_transport::CompressedSubscriber sub = it.subscribe("/camera/image/compressed", 1000, imageCallback);

然而,上面的内容给我带来了编译错误。如果你能推荐适当的方式来设置这一点,我们将不胜感激。我已经跑了

代码语言:javascript
运行
复制
rosmake compressed_image_transport

它成功地建造了。谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-08-28 19:42:39

经过一些研究,我发现了这个问题。基本上,当您想要捕获压缩的图像数据时,您需要运行:

代码语言:javascript
运行
复制
rosmake compressed_image_transport

如前所述,使压缩图像从您的相机可用。相机现在将发布压缩图像主题,您可以通过运行

代码语言:javascript
运行
复制
rostopic list

在上面运行rosmake并启动您的相机之后。然后,在您的C++代码中,您需要使用:

代码语言:javascript
运行
复制
void imageCallback(const sensor_msgs::CompressedImage::ConstPtr & msg) { }

<snip>

ros::NodeHandle n;
ros::Subscriber sub = n.subscribe("camera/rgb/image_raw/compressed", 1000, imageCallback);
// (Or whichever topic you wish to subscribe to)

正确地接收来自照相机的压缩图像消息。

注意:文档表明"CompressedImage msg“包含一个data[]成员;这实际上是一个boost对象,因此要获得它的大小,请使用msg->data.size()。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63637002

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档