How to convert an an opencv image using cvBridge??
How do I convert an image I have opened through opencv into sensor_msgs/image??
ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange |
How do I convert an image I have opened through opencv into sensor_msgs/image??
I recommend the cv_bridge tutorials.
Here is a snippet of code I have used to do this and the full code is here. It is a package that also uses opencv to grab images and publish them. Some of the variables are:
image_transport::ImageTransport transport;
image_transport::CameraPublisher image_pub;
camera_info_manager::CameraInfoManager info_mgr;
And the code:
// if subscribers, pub images
if(image_pub.getNumSubscribers() > 0) {
ros::Time time = ros::Time::now();
// convert OpenCV image to ROS message
cv_bridge::CvImage cvi;
cvi.header.stamp = time;
cvi.header.frame_id = "image";
cvi.encoding = "bgr8";
cvi.image = cv_image;
// get camera parameters
sensor_msgs::CameraInfo info = info_mgr.getCameraInfo();
info.header.stamp = cvi.header.stamp;
info.header.frame_id = cvi.header.frame_id; // whatever it is called
info.width = cv_image.cols;
info.height = cv_image.rows;
sensor_msgs::Image im;
cvi.toImageMsg(im);
image_pub.publish(im,info);
}
Asked: 2012-04-28 05:12:45 -0500
Seen: 4,649 times
Last updated: Apr 28 '12
sensor_msgs::CompressedImage subscribe fails to build
Working with cv_bridge and OpenCV correctly
Help needed cv_bridge vision_opencv ros indigo rpi wheezy
ImportError: cannot import name CvBridge
Problem with catkin_make cv_bridge
Return a value from a callback function
gstreamer appsink buffer to ROS CompressedImage
Unable to store the depth map in 32FC1 format?
Problem integrating ros with opencv to work with rgb camera output in ros.
If either of these answers answered your question, please mark one as "correct" so this questions gets closed out ... thanks!