00001 /************************************************************************* 00002 > File Name: optical_flow.h 00003 > Author: yincanben 00004 > Mail: yincanben@163.com 00005 > Created Time: Tue 24 Mar 2015 04:23:18 PM CST 00006 ************************************************************************/ 00007 00008 #ifndef _OPTICAL_FLOW_H 00009 #define _OPTICAL_FLOW_H 00010 00011 #include <image_transport/image_transport.h> 00012 #include <cv_bridge/cv_bridge.h> 00013 #include <sensor_msgs/image_encodings.h> 00014 #include <opencv2/imgproc/imgproc.hpp> 00015 #include <opencv2/video/tracking.hpp> 00016 #include <opencv2/calib3d/calib3d.hpp> 00017 #include <opencv2/highgui/highgui.hpp> 00018 #include <iostream> 00019 #include <boost/timer.hpp> 00020 00021 class OpticalFlow{ 00022 public: 00023 OpticalFlow(); 00024 ~OpticalFlow() ; 00025 void process (cv::Mat &image); 00026 00027 private: 00028 00029 void drawFeatures( cv::Mat & image, std::vector<cv::Point2f> const & old_corners, std::vector<cv::Point2f> const & new_corners) ; 00030 void filterPoints( std::vector<cv::Point2f> & p1, std::vector<cv::Point2f> & p2, std::vector<unsigned char> const & status) ; 00031 void trackFeatures(cv::Mat key_image, cv::Mat curr_image, std::vector<cv::Point2f> & corners, std::vector<cv::Point2f> & new_corners) ; 00032 cv::Mat key_image_; 00033 std::vector<cv::Point2f> key_corners_; 00034 00035 int num_keypoints_param_; 00036 double matchscore_thresh_param_; 00037 00038 00039 }; 00040 00041 #endif