37 #ifndef POSEDETECTION_MSGS_FEATURE0D_TO_IMAGE_H_
38 #define POSEDETECTION_MSGS_FEATURE0D_TO_IMAGE_H_
41 #include <sensor_msgs/Image.h>
42 #include <posedetection_msgs/ImageFeature0D.h>
44 #include <opencv2/opencv.hpp>
45 #include <opencv2/highgui/highgui.hpp>
46 #include <boost/shared_ptr.hpp>
53 #if BOOST_VERSION < 106000 // since 1.60.0, boost uses placeholders namesapce for _1,_2...
54 #ifndef BOOST_PLAEHOLDERS
55 #define BOOST_PLAEHOLDERS
58 namespace placeholders
60 extern boost::arg<1>
_1;
61 extern boost::arg<2>
_2;
62 extern boost::arg<3>
_3;
63 extern boost::arg<4>
_4;
64 extern boost::arg<5>
_5;
65 extern boost::arg<6>
_6;
66 extern boost::arg<7>
_7;
67 extern boost::arg<8>
_8;
68 extern boost::arg<9>
_9;
71 #endif // BOOST_PLAEHOLDERS
72 #endif // BOOST_VERSION < 106000
77 const std::vector<float> positions,
78 const std::vector<float> scales,
79 const std::vector<float> orientations)
83 for(
size_t i = 0; i < positions.size()/2; ++i) {
84 float scale = i < scales.size() ? scales[i] : 10.0;
85 cv::Point center = cv::Point(positions[2*i+0], positions[2*i+1]);
86 cv::circle(dst, center, scale, CV_RGB(0,255,0));
87 if( i < orientations.size() ) {
89 cv::Point end_pt = cv::Point(center.x+std::cos(orientations[i])*scale,
90 center.y+std::sin(orientations[i])*scale);
91 cv::line(dst, center, end_pt, CV_RGB(255,0,0));
105 posedetection_msgs::Feature0D
113 void imagefeature_cb(
const posedetection_msgs::ImageFeature0DConstPtr& msg_ptr);
115 const posedetection_msgs::Feature0DConstPtr& feature_msg);