void imageCallback(const sensor_msgs::ImageConstPtr& msg) { cv_bridge::CvImagePtr cv_img_ptr; msg->header; try { cv_img_ptr = cv_bridge::toCvCopy(msg, "mono8"); } catch (cv_bridge::Exception& e) { ROS_ERROR_STREAM("Could not convert ROS image to CV: "<< e.what()); return; } static int id = 0; int n = reader_.parse(cv_img_ptr); ROS_DEBUG_STREAM("Got image, has "<<n<<" barcodes"); std::vector<barcode::Barcode> barcodes = reader_.getBarcodes(); for (uint i = 0; i < reader_.getBarcodes().size(); i++) { ROS_DEBUG_STREAM("Barcode: " << barcodes[i].data // << " x:"<<barcodes[i].x// << " y:"<<barcodes[i].y); vis_.publish(barcodes[i].x, barcodes[i].y, barcodes[i].z, msg->header.frame_id, id++ % 1000); } if (msg->header.frame_id == "") { ROS_ERROR_THROTTLE(1, "Received image with empty frame_id, would cause tf connectivity issues."); } object_pub_.publish(barcodes, msg); }