Following is the explanation of the complete code:
#include <image_transport/image_transport.h>
We are using the image_transport package in this code for publishing and subscribing to image in ROS.
#include <cv_bridge/cv_bridge.h> #include <sensor_msgs/image_encodings.h>
This header includes the CvBridge class and image encoding related functions in
the code.
#include <opencv2/imgproc/imgproc.hpp> #include <opencv2/highgui/highgui.hpp>
These are main OpenCV image processing module and GUI modules which provide image processing and GUI APIs in our code.
image_transport::ImageTransport it_; public: Edge_Detector() : it_(nh_) { // Subscribe to input video feed and publish output video feed image_sub_ = it_.subscribe("/usb_cam/image_raw", 1, &ImageConverter::imageCb, this); image_pub_ = it_.advertise("/edge_detector/processed_image", 1);
We will look in more detail at the line image_transport::ImageTransport it_ . This line creates an instance of ImageTransport which is used to publish and subscribe the ROS image messages. More information about the ImageTransport API is given next.