00001 #include "fitting.h" 00002 #include <ros/node_handle.h> 00003 #include <opencv_fitting/Point2DList.h> 00004 00005 class DetectEllipseNodeImpl : public DetectEllipseNode 00006 { 00007 ros::NodeHandle _nh; 00008 ros::Publisher _pubposes2d; 00009 double ellipse_radius; 00010 public: 00011 DetectEllipseNodeImpl() { 00012 // topic/service/publisher subscription 00013 } 00014 00015 virtual void imagecb(const sensor_msgs::ImageConstPtr& msg) { 00016 // opencv_fitting::Point2DList mylist; 00017 // DetectEllipses(msg,mylist); 00018 // _pubposes2d.publish(mylist); 00019 // 00020 // sensor_msgs::PointCloud points; 00021 // DetectCircles(msg,points); 00022 // _pubcircles.publish(points); 00023 } 00024 00025 virtual void DetectEllipses(const sensor_msgs::ImageConstPtr& msg, opencv_fitting::Poses2D& ellipses) 00026 { 00027 // 実装してください 00028 } 00029 00030 virtual void DetectCircles(const sensor_msgs::ImageConstPtr& msg, sensor_msgs::PointCloud& points) 00031 { 00032 // 実装してください 00033 } 00034 }; 00035 00036 double fitEllipse( const cv::Mat& points, cv::RotatedRect& ellipse ) 00037 { 00038 // ここで実装してください 00039 return 0; 00040 } 00041 00042 void fitEllipseFromImage(cv::Mat& image, std::list<cv::RotatedRect>& ellipses) 00043 { 00044 // 画像からpointsを初期化する 00045 } 00046 00047 DetectEllipseNodePtr CreateDetectEllipseNode() 00048 { 00049 return DetectEllipseNodePtr(new DetectEllipseNodeImpl()); 00050 }