要通过ROS发送图像,可以使用sensor_msgs/Image消息类型。以下是一个示例代码,展示如何在ROS中发送图像:
#include <ros/ros.h>
#include <sensor_msgs/Image.h>
#include <cv_bridge/cv_bridge.h>
int main(int argc, char** argv)
{
// 初始化ROS节点
ros::init(argc, argv, "image_publisher");
ros::NodeHandle nh;
// 创建一个图像发布者
ros::Publisher image_pub = nh.advertise<sensor_msgs::Image>("/image_topic", 10);
cv::Mat image = cv::imread("path_to_image.jpg", CV_LOAD_IMAGE_COLOR); // 加载图像
if (image.empty()) {
ROS_ERROR("Failed to load image");
return -1;
}
ros::Rate rate(10); // 设置发布频率为10Hz
while (ros::ok())
{
sensor_msgs::ImagePtr msg = cv_bridge::CvImage(std_msgs::Header(), "bgr8", image).toImageMsg();
image_pub.publish(msg); // 发布图像消息
ros::spinOnce(); // 处理回调函数
rate.sleep(); // 控制发布频率
}
return 0;
}
在这个示例代码中,我们首先加载了一张图像,并将其转换为sensor_msgs/Image消息类型。然后创建一个图像发布者,将该消息发布到指定的话题(topic)”/image_topic” 上。通过调整发布频率来控制图像的发送速度。
你需要根据实际情况修改代码中的图像路径和话题名称。同时,确保已安装cv_bridge和image_transport等必要的ROS依赖项。
希望这个示例能对你有所帮助!
内容由零声教学AI助手提供,问题来源于学员提问




