37 #include <boost/assign.hpp> 
   38 #include <jsk_topic_tools/log_utils.h> 
   41 #include <opencv2/opencv.hpp> 
   42 #if ( CV_MAJOR_VERSION >= 4) 
   43 #include <opencv2/imgproc/imgproc_c.h> 
   51     DiagnosticNodelet::onInit();
 
   61     jsk_topic_tools::warnNoRemap(names);
 
   70     const sensor_msgs::Image::ConstPtr& image_msg)
 
   72     std::vector<std::vector<cv::Point> > contours;
 
   73     std::vector<std::vector<cv::Point> > convex_contours(1);
 
   74     std::vector<cv::Vec4i> hierarchy;
 
   78     cv::findContours(input, contours, hierarchy, CV_RETR_EXTERNAL, CV_CHAIN_APPROX_SIMPLE, cv::Point(0, 0));
 
   79     cv::Mat drawing = cv::Mat::zeros(
input.size(), CV_8UC3);
 
   80     for( 
int i = 0; 
i< contours.size(); 
i++ )
 
   82       cv::Scalar color = cv::Scalar( rng.uniform(0, 255), rng.uniform(0,255), rng.uniform(0,255) );
 
   83       cv::drawContours(drawing, contours, 
i, color, CV_FILLED, 8, hierarchy, 0, cv::Point());
 
   90     std::vector<cv::Point> all_contours;
 
   91     for (
size_t i = 0; 
i < contours.size(); 
i++) {
 
   92       for (
size_t j = 0; j < contours[
i].size(); j++) {
 
   93         all_contours.push_back(contours[
i][j]);
 
   97     cv::convexHull(cv::Mat(all_contours), convex_contours[0]);
 
   98     cv::Mat convex_image = cv::Mat::zeros(
input.size(), CV_8UC1);
 
   99     cv::drawContours(convex_image, convex_contours, 0, cv::Scalar(255), CV_FILLED);