Skip to content

Instantly share code, notes, and snippets.

@mjcarroll
Created August 29, 2012 16:15
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save mjcarroll/3515031 to your computer and use it in GitHub Desktop.
Save mjcarroll/3515031 to your computer and use it in GitHub Desktop.
Test Case for image_view
#include <ros/ros.h>
#include <opencv/cv.h>
#include <opencv/highgui.h>
#include <image_transport/image_transport.h>
#include <cv_bridge/cv_bridge.h>
#include <sensor_msgs/Image.h>
#include <sensor_msgs/image_encodings.h>
namespace {
cv::Mat image_;
image_transport::Publisher image_pub_;
}
void
pubImage(void)
{
// Generate an image that is all black.
image_ = cv::Mat::zeros(200,200,CV_8UC3);
// First strip is blue
image_.colRange(0,49) = cv::Scalar(255, 0, 0);
// Second strip is green
image_.colRange(50,99) = cv::Scalar(0, 255, 0);
// Third strip is red
image_.colRange(100,149) = cv::Scalar(0, 0, 255);
cv_bridge::CvImage image_msg;
image_msg.encoding = sensor_msgs::image_encodings::TYPE_8UC3;
image_msg.image = cv::Mat::zeros(200, 200, CV_8UC3);
image_.convertTo(image_msg.image, CV_8UC3);
image_pub_.publish(image_msg.toImageMsg());
cv::imshow("Image", image_);
}
int
main(int argc, char *argv[]) {
ros::init(argc, argv, "image_pub");
ros::NodeHandle node;
cv::namedWindow("Image", CV_WINDOW_NORMAL | CV_WINDOW_FREERATIO | CV_GUI_NORMAL);
cvResizeWindow("Image", 200, 200);
cvStartWindowThread();
image_transport::ImageTransport it = image_transport::ImageTransport(node);
image_pub_ = it.advertise("image/image_raw", 5);
ros::Rate loop_rate(10);
while(ros::ok())
{
pubImage();
ros::spinOnce();
loop_rate.sleep();
}
cvDestroyAllWindows();
return 0;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment