Publish compressed image.

This commit is contained in:
James Pace 2026-01-05 10:49:39 -05:00
parent 01b13b7afd
commit 1c50e01ed1
1 changed files with 11 additions and 10 deletions

View File

@ -1,6 +1,6 @@
#include <rclcpp/rclcpp.hpp>
#include <image_transport/image_transport.hpp>
#include <sensor_msgs/msg/image.hpp>
#include <sensor_msgs/msg/compressed_image.hpp>
#include <std_msgs/msg/header.hpp>
#include <cv_bridge/cv_bridge.hpp>
@ -18,35 +18,36 @@ namespace j7s {
public:
ImagePublisher(const rclcpp::NodeOptions& options);
private:
image_transport::ImageTransport m_transport;
image_transport::Publisher m_publisher;
std::shared_ptr<rclcpp::Publisher<sensor_msgs::msg::Image>> m_publisher;
std::shared_ptr<rclcpp::Publisher<sensor_msgs::msg::CompressedImage>> m_compressedPublisher;
rclcpp::TimerBase::SharedPtr m_timer;
sensor_msgs::msg::Image::SharedPtr draw_image();
std::tuple<sensor_msgs::msg::Image::SharedPtr, sensor_msgs::msg::CompressedImage::SharedPtr> draw_image();
};
};
namespace j7s {
ImagePublisher::ImagePublisher(const rclcpp::NodeOptions& options):
Node("image_publisher", options),
m_transport(std::shared_ptr<rclcpp::Node>(this)),
m_publisher(m_transport.advertise("image", 1)),
m_publisher(this->create_publisher<sensor_msgs::msg::Image>("image", 1)),
m_compressedPublisher(this->create_publisher<sensor_msgs::msg::CompressedImage>("image/compressed", 1)),
m_timer{}
{
m_timer = this->create_timer(10ms, [this]() -> void {
const auto msg = draw_image();
m_publisher.publish(msg);
const auto [image, compressedImage] = draw_image();
m_publisher->publish(*image);
m_compressedPublisher->publish(*compressedImage);
});
}
sensor_msgs::msg::Image::SharedPtr ImagePublisher::draw_image()
std::tuple<sensor_msgs::msg::Image::SharedPtr, sensor_msgs::msg::CompressedImage::SharedPtr> ImagePublisher::draw_image()
{
cv::Mat mat = cv::Mat::zeros(200, 200, CV_8UC3);
std_msgs::msg::Header header;
header.stamp = this->now();
cv_bridge::CvImage image(header, "mono8", mat);
return image.toImageMsg();
return std::tuple(image.toImageMsg(), image.toCompressedImageMsg());
}
};