format_controllers.hpp
Go to the documentation of this file.
1 #ifndef USB_CAM_CONTROLLERS_FORMAT_CONTROLLERS
2 #define USB_CAM_CONTROLLERS_FORMAT_CONTROLLERS
3 
4 #include <string>
5 
6 #include <cv_bridge/cv_bridge.h>
9 #include <ros/console.h>
10 #include <ros/duration.h>
11 #include <ros/node_handle.h>
12 #include <ros/time.h>
16 
17 #include <opencv2/core/core.hpp>
18 #include <opencv2/imgproc/imgproc.hpp>
19 
20 namespace usb_cam_controllers {
21 
22 template < cv::ColorConversionCodes ConversionCode, const std::string *DstEncoding >
24 public:
26 
27  virtual ~FormatController() {}
28 
29 protected:
31  ros::NodeHandle &controller_nh) {
32  width_ = controller_nh.param("image_width", 640);
33  height_ = controller_nh.param("image_height", 480);
34 
35  // init publisher for decoded images
36  publisher_ = image_transport::ImageTransport(controller_nh).advertise("image", 1);
37 
38  return true;
39  }
40 
41  virtual void startingImpl(const ros::Time &time) {
42  // nothing to do
43  }
44 
45  virtual void updateImpl(const ros::Time &time, const ros::Duration &period) {
46  // allocate output message
48  out.header.stamp = packet_iface_.getStamp();
49  out.encoding = *DstEncoding;
50 
51  // convert pixel formats
52  try {
53  cv::cvtColor(cv::Mat(height_, width_, CV_8UC(packet_iface_.getLength() / (height_ * width_)),
54  const_cast< uint8_t * >(packet_iface_.getStartAs< uint8_t >())),
55  out.image, ConversionCode);
56  } catch (const cv::Exception &ex) {
57  ROS_ERROR_STREAM(ex.what());
58  return;
59  }
60 
62  }
63 
64  virtual void stoppingImpl(const ros::Time &time) {
65  // nothing to do
66  }
67 
68 private:
70 
72 };
73 
80 
81 } // namespace usb_cam_controllers
82 
83 #endif
usb_cam_controllers
Definition: camera_info_controller.hpp:17
usb_cam_controllers::SimplePacketController::packet_iface_
usb_cam_hardware_interface::PacketHandle packet_iface_
Definition: simple_packet_controller.hpp:85
node_handle.h
image_encodings.h
usb_cam_hardware_interface::PacketHandle::getStamp
ros::Time getStamp() const
image_transport::ImageTransport
usb_cam_controllers::FormatController
Definition: format_controllers.hpp:23
ROS_ERROR_STREAM
#define ROS_ERROR_STREAM(args)
cv_bridge::CvImage::toImageMsg
sensor_msgs::ImagePtr toImageMsg() const
usb_cam_controllers::FormatController::height_
int height_
Definition: format_controllers.hpp:69
usb_cam_controllers::FormatController::updateImpl
virtual void updateImpl(const ros::Time &time, const ros::Duration &period)
Definition: format_controllers.hpp:45
time.h
usb_cam_controllers::FormatController::stoppingImpl
virtual void stoppingImpl(const ros::Time &time)
Definition: format_controllers.hpp:64
usb_cam_hardware_interface::PacketHandle::getStartAs
const Byte * getStartAs() const
packet_interface.hpp
publisher.h
image_transport::ImageTransport::advertise
Publisher advertise(const std::string &base_topic, uint32_t queue_size, bool latch=false)
usb_cam_controllers::YUYVController
FormatController< cv::COLOR_YUV2BGR_YUYV, &sensor_msgs::image_encodings::BGR8 > YUYVController
Definition: format_controllers.hpp:79
console.h
duration.h
usb_cam_controllers::FormatController::~FormatController
virtual ~FormatController()
Definition: format_controllers.hpp:27
usb_cam_controllers::FormatController::startingImpl
virtual void startingImpl(const ros::Time &time)
Definition: format_controllers.hpp:41
usb_cam_controllers::FormatController::publisher_
image_transport::Publisher publisher_
Definition: format_controllers.hpp:71
cv_bridge::CvImage::header
std_msgs::Header header
usb_cam_controllers::RGB24Controller
FormatController< cv::COLOR_RGB2BGR, &sensor_msgs::image_encodings::BGR8 > RGB24Controller
Definition: format_controllers.hpp:75
usb_cam_controllers::UYVYController
FormatController< cv::COLOR_YUV2BGR_UYVY, &sensor_msgs::image_encodings::BGR8 > UYVYController
Definition: format_controllers.hpp:77
usb_cam_hardware_interface::PacketHandle::getLength
std::size_t getLength() const
image_transport::Publisher::publish
void publish(const sensor_msgs::Image &message) const
simple_packet_controller.hpp
usb_cam_controllers::FormatController::FormatController
FormatController()
Definition: format_controllers.hpp:25
image_transport.h
usb_cam_controllers::FormatController::width_
int width_
Definition: format_controllers.hpp:69
usb_cam_hardware_interface::PacketInterface
ros::Time
cv_bridge::CvImage::encoding
std::string encoding
image_transport::Publisher
cv_bridge.h
cv_bridge::CvImage
ros::NodeHandle::param
T param(const std::string &param_name, const T &default_val) const
usb_cam_controllers::SimplePacketController
Definition: simple_packet_controller.hpp:19
cv_bridge::CvImage::image
cv::Mat image
ros::Duration
usb_cam_controllers::FormatController::initImpl
virtual bool initImpl(usb_cam_hardware_interface::PacketInterface *hw, ros::NodeHandle &root_nh, ros::NodeHandle &controller_nh)
Definition: format_controllers.hpp:30
ros::NodeHandle


usb_cam_controllers
Author(s):
autogenerated on Wed Mar 2 2022 01:11:39