#include <OmniTracking.hh>
Inheritance diagram for OmniTracking< ConverterT, AngleT, ImageT, PointT >:
| ConverterT | Conversion concrete class. For example OmniFastLookupTable or OmniGCardConverter | |
| AngleT | Base unit used for angle. It can be for example "int" or "double". | |
| ImageT | Usually IplImage, the OpenCV standard. | |
| PointT | Usually CvPoint, the OpenCV standard. |
Definition at line 56 of file OmniTracking.hh.
Public Member Functions | |
| OmniTracking (IplImage *first_frame, OmniConversion< ConverterT, AngleT, ImageT, PointT > *conv_table, int max_tracked_points_count=100, int freeze_frame_bound=FREEZE_FRAME_BOUND, double track_window_hitrate=TRACK_WINDOW_HITRATE) | |
| Constructor. | |
| virtual | ~OmniTracking () |
| bool | add_point_to_track (CvPoint &point) |
| Add a point to tracking. | |
| void | process_next_frame (IplImage *next_frame) |
| The main loop for this class. | |
| void | register_image_callbacks (on_create_image_context_cb *create_image_context, on_image_do_action_cb *image_show, on_destroy_image_context_cb *destroy_image_context, void *callback_data) |
| The default display system is give to OpenCV capabilities. | |
Private Member Functions | |
| void | initialize_image_buffers (IplImage *first_video_frame) |
| Initialize image buffers. | |
Private Attributes | |
| on_create_image_context_cb * | create_image_context |
| Image display callback. | |
| on_image_do_action_cb * | image_show |
| Image display callback. | |
| on_destroy_image_context_cb * | destroy_image_context |
| Image display callback. | |
| IplImage * | _image |
| Internal image buffers used to perform Lukas-Kanade algorithm. | |
| IplImage * | _grey |
| IplImage * | _prev_grey |
| IplImage * | _pyramid |
| IplImage * | _prev_pyramid |
| IplImage * | _swap_temp |
| void * | _callback_data_on_image_cb |
| int | _win_size |
| Win size in which we will calculate the optical flow. | |
| CvPoint2D32f * | _tracked_points [2] |
| points. | |
| CvPoint2D32f * | _points [2] |
| CvPoint2D32f * | _swap_points |
| int | _max_tracked_points_count |
| max number of points tracked | |
| char * | _tracked_points_status |
| int | _tracked_points_count |
| number of points tracked | |
| int | _video_width |
| int | _video_height |
| int | _track_flags |
| Takes Lukas-Kanade flags. | |
| bool | _add_remove_pt |
| list< added_point_data_t * > | _points_added_list |
| OmniTracking< ConverterT, AngleT, ImageT, PointT >::OmniTracking | ( | IplImage * | first_frame, | |
| OmniConversion< ConverterT, AngleT, ImageT, PointT > * | conv_table, | |||
| int | max_tracked_points_count = 100, |
|||
| int | freeze_frame_bound = FREEZE_FRAME_BOUND, |
|||
| double | track_window_hitrate = TRACK_WINDOW_HITRATE | |||
| ) |
| first_frame | First frame of a video stream. Class will retrieve width height and other informations from it. | |
| conv_table | Conversion table. | |
| max_tracked_points_count | Max number of points to track. defaults to 100. It's a huge number and it's unlikely that will never be reached. | |
| freeze_frame_bound | Number of frames to freeze before removing the window. Defaults to FREEZE_FRAME_BOUND | |
| track_window_hitrate | Percentage of free hits a window must have against a tracking table to be able to be tracked. Defaults to TRACK_WINDOW_HITRATE. |
Definition at line 170 of file OmniTracking.hh.
References OmniTracking< ConverterT, AngleT, ImageT, PointT >::_add_remove_pt, OmniTracking< ConverterT, AngleT, ImageT, PointT >::_max_tracked_points_count, OmniTracking< ConverterT, AngleT, ImageT, PointT >::_points, OmniTracking< ConverterT, AngleT, ImageT, PointT >::_tracked_points, OmniTracking< ConverterT, AngleT, ImageT, PointT >::_tracked_points_count, OmniTracking< ConverterT, AngleT, ImageT, PointT >::_tracked_points_status, OmniTracking< ConverterT, AngleT, ImageT, PointT >::_video_height, OmniTracking< ConverterT, AngleT, ImageT, PointT >::_video_width, OmniTracking< ConverterT, AngleT, ImageT, PointT >::_win_size, OmniTracking< ConverterT, AngleT, ImageT, PointT >::initialize_image_buffers(), NULL, omnistuff_create_image_context(), omnistuff_destroy_image_context(), omnistuff_image_do_action(), and OmniTracking< ConverterT, AngleT, ImageT, PointT >::register_image_callbacks().
Here is the call graph for this function:
| OmniTracking< ConverterT, AngleT, ImageT, PointT >::~OmniTracking | ( | ) | [virtual] |
Definition at line 208 of file OmniTracking.hh.
References OmniTracking< ConverterT, AngleT, ImageT, PointT >::_points_added_list.
| bool OmniTracking< ConverterT, AngleT, ImageT, PointT >::add_point_to_track | ( | CvPoint & | point | ) |
| point | CvPoint to track. Generally it's the face-center. |
| void OmniTracking< ConverterT, AngleT, ImageT, PointT >::initialize_image_buffers | ( | IplImage * | first_video_frame | ) | [private] |
Pyramid image, grey image and so on.
| first_video_frame | First video frame. Should be the same of the constructor's one. |
Definition at line 226 of file OmniTracking.hh.
References OmniTracking< ConverterT, AngleT, ImageT, PointT >::_grey, OmniTracking< ConverterT, AngleT, ImageT, PointT >::_image, OmniTracking< ConverterT, AngleT, ImageT, PointT >::_max_tracked_points_count, OmniTracking< ConverterT, AngleT, ImageT, PointT >::_prev_grey, OmniTracking< ConverterT, AngleT, ImageT, PointT >::_prev_pyramid, OmniTracking< ConverterT, AngleT, ImageT, PointT >::_pyramid, OmniTracking< ConverterT, AngleT, ImageT, PointT >::_track_flags, OmniTracking< ConverterT, AngleT, ImageT, PointT >::_tracked_points, and OmniTracking< ConverterT, AngleT, ImageT, PointT >::_tracked_points_status.
Referenced by OmniTracking< ConverterT, AngleT, ImageT, PointT >::OmniTracking().
Here is the caller graph for this function:
| void OmniTracking< ConverterT, AngleT, ImageT, PointT >::process_next_frame | ( | IplImage * | next_frame | ) |
Subsequent frames to the first should be passed here. The tracking and the displayng of the resulting images will be automatically performed.
| next_frame | Next IplImage in the stream. |
Definition at line 257 of file OmniTracking.hh.
References OmniTracking< ConverterT, AngleT, ImageT, PointT >::_add_remove_pt, OmniTracking< ConverterT, AngleT, ImageT, PointT >::_grey, OmniTracking< ConverterT, AngleT, ImageT, PointT >::_image, OmniTracking< ConverterT, AngleT, ImageT, PointT >::_prev_grey, OmniTracking< ConverterT, AngleT, ImageT, PointT >::_prev_pyramid, OmniTracking< ConverterT, AngleT, ImageT, PointT >::_pyramid, OmniTracking< ConverterT, AngleT, ImageT, PointT >::_track_flags, OmniTracking< ConverterT, AngleT, ImageT, PointT >::_tracked_points, OmniTracking< ConverterT, AngleT, ImageT, PointT >::_tracked_points_count, OmniTracking< ConverterT, AngleT, ImageT, PointT >::_tracked_points_status, OmniTracking< ConverterT, AngleT, ImageT, PointT >::_win_size, and OmniTrackingTable< ConverterT, AngleT, ImageT, PointT >::update_begin().
Here is the call graph for this function:
| void OmniTracking< ConverterT, AngleT, ImageT, PointT >::register_image_callbacks | ( | on_create_image_context_cb * | create_image_context, | |
| on_image_do_action_cb * | image_show, | |||
| on_destroy_image_context_cb * | destroy_image_context, | |||
| void * | callback_data | |||
| ) |
Unfortunately this is not really performant and bug free on a multiplatform fashion. This is because we can set the display callbacks to act like we want with other libraries.
| create_image_context | Create window [with a title] where to display the images. | |
| image_show | Perform the call to the show function. | |
| destroy_image_context | Destroy the display window and it's context. | |
| callback_data | Callback data to image* functions. Usually a class "this" pointer. |
Referenced by OmniTracking< ConverterT, AngleT, ImageT, PointT >::OmniTracking().
Here is the caller graph for this function:
bool OmniTracking< ConverterT, AngleT, ImageT, PointT >::_add_remove_pt [private] |
Definition at line 158 of file OmniTracking.hh.
Referenced by OmniTracking< ConverterT, AngleT, ImageT, PointT >::OmniTracking(), and OmniTracking< ConverterT, AngleT, ImageT, PointT >::process_next_frame().
void* OmniTracking< ConverterT, AngleT, ImageT, PointT >::_callback_data_on_image_cb [private] |
Definition at line 135 of file OmniTracking.hh.
IplImage * OmniTracking< ConverterT, AngleT, ImageT, PointT >::_grey [private] |
Definition at line 128 of file OmniTracking.hh.
Referenced by OmniTracking< ConverterT, AngleT, ImageT, PointT >::initialize_image_buffers(), and OmniTracking< ConverterT, AngleT, ImageT, PointT >::process_next_frame().
IplImage* OmniTracking< ConverterT, AngleT, ImageT, PointT >::_image [private] |
Definition at line 128 of file OmniTracking.hh.
Referenced by OmniTracking< ConverterT, AngleT, ImageT, PointT >::initialize_image_buffers(), and OmniTracking< ConverterT, AngleT, ImageT, PointT >::process_next_frame().
int OmniTracking< ConverterT, AngleT, ImageT, PointT >::_max_tracked_points_count [private] |
Definition at line 146 of file OmniTracking.hh.
Referenced by OmniTracking< ConverterT, AngleT, ImageT, PointT >::initialize_image_buffers(), and OmniTracking< ConverterT, AngleT, ImageT, PointT >::OmniTracking().
CvPoint2D32f * OmniTracking< ConverterT, AngleT, ImageT, PointT >::_points[2] [private] |
Definition at line 141 of file OmniTracking.hh.
Referenced by OmniTracking< ConverterT, AngleT, ImageT, PointT >::OmniTracking().
list<added_point_data_t*> OmniTracking< ConverterT, AngleT, ImageT, PointT >::_points_added_list [private] |
Definition at line 159 of file OmniTracking.hh.
Referenced by OmniTracking< ConverterT, AngleT, ImageT, PointT >::~OmniTracking().
IplImage * OmniTracking< ConverterT, AngleT, ImageT, PointT >::_prev_grey [private] |
Definition at line 128 of file OmniTracking.hh.
Referenced by OmniTracking< ConverterT, AngleT, ImageT, PointT >::initialize_image_buffers(), and OmniTracking< ConverterT, AngleT, ImageT, PointT >::process_next_frame().
IplImage * OmniTracking< ConverterT, AngleT, ImageT, PointT >::_prev_pyramid [private] |
Definition at line 128 of file OmniTracking.hh.
Referenced by OmniTracking< ConverterT, AngleT, ImageT, PointT >::initialize_image_buffers(), and OmniTracking< ConverterT, AngleT, ImageT, PointT >::process_next_frame().
IplImage * OmniTracking< ConverterT, AngleT, ImageT, PointT >::_pyramid [private] |
Definition at line 128 of file OmniTracking.hh.
Referenced by OmniTracking< ConverterT, AngleT, ImageT, PointT >::initialize_image_buffers(), and OmniTracking< ConverterT, AngleT, ImageT, PointT >::process_next_frame().
CvPoint2D32f * OmniTracking< ConverterT, AngleT, ImageT, PointT >::_swap_points [private] |
Definition at line 141 of file OmniTracking.hh.
IplImage * OmniTracking< ConverterT, AngleT, ImageT, PointT >::_swap_temp [private] |
Definition at line 128 of file OmniTracking.hh.
int OmniTracking< ConverterT, AngleT, ImageT, PointT >::_track_flags [private] |
Definition at line 156 of file OmniTracking.hh.
Referenced by OmniTracking< ConverterT, AngleT, ImageT, PointT >::initialize_image_buffers(), and OmniTracking< ConverterT, AngleT, ImageT, PointT >::process_next_frame().
CvPoint2D32f* OmniTracking< ConverterT, AngleT, ImageT, PointT >::_tracked_points[2] [private] |
int OmniTracking< ConverterT, AngleT, ImageT, PointT >::_tracked_points_count [private] |
Definition at line 150 of file OmniTracking.hh.
Referenced by OmniTracking< ConverterT, AngleT, ImageT, PointT >::OmniTracking(), and OmniTracking< ConverterT, AngleT, ImageT, PointT >::process_next_frame().
char* OmniTracking< ConverterT, AngleT, ImageT, PointT >::_tracked_points_status [private] |
int OmniTracking< ConverterT, AngleT, ImageT, PointT >::_video_height [private] |
Definition at line 153 of file OmniTracking.hh.
Referenced by OmniTracking< ConverterT, AngleT, ImageT, PointT >::OmniTracking().
int OmniTracking< ConverterT, AngleT, ImageT, PointT >::_video_width [private] |
Definition at line 152 of file OmniTracking.hh.
Referenced by OmniTracking< ConverterT, AngleT, ImageT, PointT >::OmniTracking().
int OmniTracking< ConverterT, AngleT, ImageT, PointT >::_win_size [private] |
Definition at line 138 of file OmniTracking.hh.
Referenced by OmniTracking< ConverterT, AngleT, ImageT, PointT >::OmniTracking(), and OmniTracking< ConverterT, AngleT, ImageT, PointT >::process_next_frame().
on_create_image_context_cb* OmniTracking< ConverterT, AngleT, ImageT, PointT >::create_image_context [private] |
Definition at line 117 of file OmniTracking.hh.
on_destroy_image_context_cb* OmniTracking< ConverterT, AngleT, ImageT, PointT >::destroy_image_context [private] |
Definition at line 123 of file OmniTracking.hh.
on_image_do_action_cb* OmniTracking< ConverterT, AngleT, ImageT, PointT >::image_show [private] |
Definition at line 120 of file OmniTracking.hh.
1.4.7