Publish compressed image.
This commit is contained in:
parent
01b13b7afd
commit
1c50e01ed1
|
|
@ -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());
|
||||
}
|
||||
};
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue