ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange |
1 | initial version |
You must use the CvCapture, I used the part of the tutorial images Converting Between ROS and OpenCV images, which is in this link
And that can be seen below in the code, and the part that is highlighted is the one that gets the image.
void imageCb(const sensor_msgs::ImageConstPtr& msg)
{
cv_bridge::CvImagePtr cv_ptr;
try
{
**cv_ptr = cv_bridge::toCvCopy(msg, sensor_msgs::image_encodings::BGR8);**
}
catch (cv_bridge::Exception& e)
{
ROS_ERROR("cv_bridge exception: %s", e.what());
return;
}
// Draw an example circle on the video stream
if (cv_ptr->image.rows > 60 && cv_ptr->image.cols > 60)
cv::circle(cv_ptr->image, cv::Point(50, 50), 10, CV_RGB(255,0,0));
// Update GUI Window
**cv::imshow(OPENCV_WINDOW, cv_ptr->image);**
cv::waitKey(3);
// Output modified video stream
image_pub_.publish(cv_ptr->toImageMsg());
}
};