#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.