diff --git a/src/publisher_vision.cpp b/src/publisher_vision.cpp index ca734f5d1cf10e4d3c2753cc02b5d05c81269f42..dfdb20593f36741cbca0cea7d0264c19070b425f 100644 --- a/src/publisher_vision.cpp +++ b/src/publisher_vision.cpp @@ -158,11 +158,11 @@ void PublisherVisionDebug::publishDerived() return; // Get capture image - auto cap_img = std::dynamic_pointer_cast<CaptureImage>(processor_vision_->getLast()); + auto cap_img = std::dynamic_pointer_cast<CaptureImage>(processor_vision_->getLast()); auto cap_img_origin = std::dynamic_pointer_cast<CaptureImage>(processor_vision_->getOrigin()); - assert(cap_img != nullptr && "Received Capture is not of type CaptureImage!"); - assert(cap_img_origin != nullptr && "Received origin Capture is not of type CaptureImage!"); + assert(cap_img != nullptr && "Received Capture is not of type CaptureImage!"); + assert(cap_img_origin != nullptr && "Received origin Capture is not of type CaptureImage!"); auto track_matrix = processor_vision_->getTrackMatrix(); // copy track matrix @@ -171,13 +171,11 @@ void PublisherVisionDebug::publishDerived() { // Extract cv image cv::Mat cv_img_debug; - + cv::cvtColor(cap_img->getImage(), cv_img_debug, cv::COLOR_GRAY2BGR); + cv::Mat cv_img_debug_preprocess; cv::cvtColor(cap_img->getImage(), cv_img_debug_preprocess, cv::COLOR_GRAY2BGR); - cv::cvtColor(cap_img->getImage(), cv_img_debug, cv::COLOR_GRAY2BGR); -// cv::cvtColor(cap_img_origin->getImage(), cv_img_debug, cv::Color_GRAY2BGR); - // Draw all tracks showTracks(cv_img_debug, track_matrix, cap_img); @@ -196,17 +194,12 @@ void PublisherVisionDebug::publishDerived() // Convert to image msg - cv_bridge::CvImagePtr cv_msg = boost::make_shared<cv_bridge::CvImage>(); - cv_msg->header.stamp.sec = cap_img->getTimeStamp().getSeconds(); - cv_msg->header.stamp.nsec = cap_img->getTimeStamp().getNanoSeconds(); - cv_msg->encoding = sensor_msgs::image_encodings::BGR8; - cv_msg->image = cv_img_debug; - - cv_bridge::CvImagePtr cv_msg_preprocess = boost::make_shared<cv_bridge::CvImage>(); - cv_msg_preprocess->header.stamp.sec = cap_img->getTimeStamp().getSeconds(); - cv_msg_preprocess->header.stamp.nsec = cap_img->getTimeStamp().getNanoSeconds(); - cv_msg_preprocess->encoding = sensor_msgs::image_encodings::BGR8; - cv_msg_preprocess->image = cv_img_debug_preprocess; + cv_bridge::CvImagePtr cv_msg = boost::make_shared<cv_bridge::CvImage>(); + cv_msg->header.stamp.sec = cap_img->getTimeStamp().getSeconds(); + cv_msg->header.stamp.nsec = cap_img->getTimeStamp().getNanoSeconds(); + cv_msg->encoding = sensor_msgs::image_encodings::BGR8; + cv_msg->image = cv_img_debug; + // convert to proper ROS type and publish auto cv_msg_ros = cv_msg->toImageMsg(); @@ -214,8 +207,13 @@ void PublisherVisionDebug::publishDerived() if (tracks_preprocess_.show_ && tracks_preprocess_.show_on_diff_topic_) { - auto cv_msg_ros_preprocess = cv_msg_preprocess->toImageMsg(); - publisher_image_preprocess_.publish(cv_msg_ros_preprocess); + cv_bridge::CvImagePtr cv_msg_preprocess = boost::make_shared<cv_bridge::CvImage>(); + cv_msg_preprocess->header.stamp.sec = cap_img->getTimeStamp().getSeconds(); + cv_msg_preprocess->header.stamp.nsec = cap_img->getTimeStamp().getNanoSeconds(); + cv_msg_preprocess->encoding = sensor_msgs::image_encodings::BGR8; + cv_msg_preprocess->image = cv_img_debug_preprocess; + auto cv_msg_ros_preprocess = cv_msg_preprocess->toImageMsg(); + publisher_image_preprocess_ .publish(cv_msg_ros_preprocess); } // store to avoid republishing the same capture @@ -274,80 +272,6 @@ std::pair<int, int> PublisherVisionDebug::minMaxFeatureInAliveTrack(const TrackM return std::pair<int, int>(min, max); } -// std::vector<int> PublisherVisionDebug::colorTrackAndFeatures(int _nb_feature_in_track, - // int _max_feature_in_tracks, - // int _min_feature_in_tracks, - // Color _color_of_features) -// { - - // // std::cout << "\n\ncolorTrackAndFeatures" << '\n'; - - // //_color_of_features will be useful with other types of sensor -> change color of tracks and features - // std::vector<int> color = {0, 0, 0}; - - // // alpha corresponds to the relative luminosity between tracks - // // 0 -> min luminosity to represent a short track - // // 1 -> max luminosity to represent a long track - // double alpha; -// // std::cout << "_max_feature_in_tracks: " << _max_feature_in_tracks << '\n'; - // if (_max_feature_in_tracks != _min_feature_in_tracks) - // { - // alpha = (double)(_nb_feature_in_track - _min_feature_in_tracks) - // / (double)(_max_feature_in_tracks - _min_feature_in_tracks); // to interval [0,1] - // } - // else - // { - // alpha = 0; // put "full luminosity as a default value" -// // alpha = 0.5; // put "half luminosity as a default value" - // } - - // double lum = (tracks_.min_luminosity_ + (tracks_.max_luminosity_ - tracks_.min_luminosity_) * (1 - alpha)); - // if (lum > 255) - // { - // color[0] = 255; - // color[1] = round(lum) - 255; - // color[2] = round(lum) - 255; - // } - // else - // { - // color[0] = round(lum); - // color[1] = 0; - // color[2] = 0; - // } - - // switch (_color_of_features) - // { - // case BLUE: - // color[2] = color[0]; - // color[0] = color[1]; - // break; - // case GREEN: - // color[1] = color[0]; - // color[0] = color[2]; - // break; - // case YELLOW: - // color[1] = color[0]; - // break; - // case MAGENTA: - // color[2] = color[0]; - // break; - // case CYAN: - // color[2] = color[0]; - // color[0] = color[1]; - // color[1] = color[2]; - // break; - // case GREY: - // color[2] = color[0]; - // color[1] = color[0]; - // break; - // case RED: - // break; - // default: - // break; - // } - - // return color; -// } cv::Scalar PublisherVisionDebug::colorTrackAndFeatures(int _nb_feature_in_track, int _max_feature_in_tracks, @@ -421,45 +345,6 @@ cv::Scalar PublisherVisionDebug::colorTrackAndFeatures(int _nb_feature_in_track, } -// std::vector<int> PublisherVisionDebug::primaryColor(Color _color) -// { -// std::vector<int> color = {0, 0, 0}; - -// switch (_color) -// { -// case BLUE: -// color[2] = 255; -// break; -// case GREEN: -// color[1] = 255; -// break; -// case RED: -// color[0] = 255; -// break; -// case YELLOW: -// color[0] = 255; -// color[1] = 255; -// break; -// case MAGENTA: -// color[0] = 255; -// color[2] = 255; -// break; -// case CYAN: -// color[1] = 255; -// color[2] = 255; -// break; -// case GREY: -// color[0] = 128; -// color[1] = 128; -// color[2] = 128; -// break; -// default: -// break; -// } - -// return color; -// } - cv::Scalar PublisherVisionDebug::primaryColor(Color _color) { int R = 0;