subscribe multiple topics using two callbacks and one class then pass the value of one callback to other [closed]
hello! i m working on a ros integrated with opencv using cvbridge library, i have worked with opencv and ros separately then use cvbridge for integration of both of them, actually i m developing a playing activity with turtlebot, my task is to find ball and then hit the ball towards goaling point, for this purpose i have tracked a circle then found its centre co-ordinates, now i want to retrieve a depth of the circle centre by subscribing it to depth topic so basically i need two topics rgb and depth simultanueosly, i have done multiple topic subscription in ros using two call backs in a single class, both callbacks subscribe to different topic but its working till one callback use rospointer msg and other using opencv data type like iplimage, mat
void imageCb(const sensor_msgs::ImageConstPtr& msg)
{
sensor_msgs::CvBridge bridge;
IplImage* img = bridge.imgMsgToCv(msg,"bgr8");
}
void imageCb1(const sensor_msgs::ImageConstPtr& msg1)
{
cv_bridge::CvImagePtr cv_ptr1;
try
{
cv_ptr1 = cv_bridge::toCvCopy(msg1, enc::TYPE_32FC1);
}
catch (cv_bridge::Exception& e)
{
ROS_ERROR("cv_bridge exception: %s", e.what());
return;
}
if (cv_ptr1->image.rows > 60 && cv_ptr1->image.cols > 60)
cv::circle(cv_ptr1->image, cv::Point(50, 50), 10, CV_RGB(255,0,0));
cv::imshow(WINDOW1, cv_ptr1->image);
cv::waitKey(3);
image_pub_1.publish(cv_ptr1->toImageMsg());
}
but when i am trying to use opencv purely in both callbacks by using conversion,
void imageCb1(const sensor_msgs::ImageConstPtr& msg1)
{
sensor_msgs::CvBridge bridge1;
IplImage* img1 = bridge1.img1MsgToCv(msg1,"TYPE_32FC1");
Mat mat(img1);
}
void imageCb(const sensor_msgs::ImageConstPtr& msg)
{
sensor_msgs::CvBridge bridge;
IplImage* img1 = bridge.img1MsgToCv(msg1,"bgr8");
}
conflict occur that produces segmentation fault