feature0d_to_image.h
Go to the documentation of this file.
1 // -*- mode: c++ -*-
2 /*********************************************************************
3  * Software License Agreement (BSD License)
4  *
5  * Copyright (c) 2015, JSK Lab
6  * All rights reserved.
7  *
8  * Redistribution and use in source and binary forms, with or without
9  * modification, are permitted provided that the following conditions
10  * are met:
11  *
12  * * Redistributions of source code must retain the above copyright
13  * notice, this list of conditions and the following disclaimer.
14  * * Redistributions in binary form must reproduce the above
15  * copyright notice, this list of conditions and the following
16  * disclaimer in the documentation and/o2r other materials provided
17  * with the distribution.
18  * * Neither the name of the JSK Lab nor the names of its
19  * contributors may be used to endorse or promote products derived
20  * from this software without specific prior written permission.
21  *
22  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
23  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
24  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
25  * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
26  * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
27  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
28  * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
29  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
30  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
31  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
32  * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
33  * POSSIBILITY OF SUCH DAMAGE.
34  *********************************************************************/
35 
36 
37 #ifndef POSEDETECTION_MSGS_FEATURE0D_TO_IMAGE_H_
38 #define POSEDETECTION_MSGS_FEATURE0D_TO_IMAGE_H_
39 
40 #include <ros/node_handle.h>
41 #include <sensor_msgs/Image.h>
42 #include <posedetection_msgs/ImageFeature0D.h>
43 
44 #include <opencv2/opencv.hpp>
45 #include <opencv2/highgui/highgui.hpp>
46 #include <boost/shared_ptr.hpp>
47 
52 
53 #if BOOST_VERSION < 106000 // since 1.60.0, boost uses placeholders namesapce for _1,_2...
54 #ifndef BOOST_PLAEHOLDERS
55 #define BOOST_PLAEHOLDERS
56 namespace boost
57 {
58 namespace placeholders
59 {
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;
69 } // namespace placeholders
70 } // namespace boost
71 #endif // BOOST_PLAEHOLDERS
72 #endif // BOOST_VERSION < 106000
73 
75 {
76  cv::Mat draw_features(const cv::Mat src,
77  const std::vector<float> positions,
78  const std::vector<float> scales,
79  const std::vector<float> orientations)
80  {
81  cv::Mat dst;
82  src.copyTo(dst);
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() ) {
88  // draw line indicating orientation
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));
92  }
93  }
94  return dst;
95  }
96 
98  {
99  public:
104  sensor_msgs::Image,
105  posedetection_msgs::Feature0D
110 
112  virtual ~Feature0DToImage();
113  void imagefeature_cb(const posedetection_msgs::ImageFeature0DConstPtr& msg_ptr);
114  void imagefeature_cb(const sensor_msgs::ImageConstPtr& image_msg,
115  const posedetection_msgs::Feature0DConstPtr& feature_msg);
116  };
117 }
118 
119 #endif
message_filters::Subscriber< posedetection_msgs::Feature0D > _sub_feature
boost::arg< 7 > _7
boost::arg< 2 > _2
boost::shared_ptr< message_filters::Synchronizer< SyncPolicy > > _sync
boost::arg< 9 > _9
boost::arg< 5 > _5
cv::Mat draw_features(const cv::Mat src, const std::vector< float > positions, const std::vector< float > scales, const std::vector< float > orientations)
boost::arg< 3 > _3
boost::arg< 8 > _8
boost::arg< 4 > _4
message_filters::sync_policies::ExactTime< sensor_msgs::Image, posedetection_msgs::Feature0D > SyncPolicy
boost::arg< 1 > _1
boost::arg< 6 > _6
message_filters::Subscriber< sensor_msgs::Image > _sub_image


posedetection_msgs
Author(s): Rosen Diankov
autogenerated on Wed May 11 2022 02:34:29