00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #include "OmniCallback.hh"
00021 #include "OmniConfig.hh"
00022
00023 #include <vector>
00024
00025 using namespace std;
00026
00027 static vector<IplImage*> * displayed_images = NULL;
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040 static void os_store_and_replace( IplImage* image, int image_id )
00041 {
00042
00043 if ( displayed_images == NULL ) {
00044 displayed_images = new vector<IplImage*>;
00045
00046
00047 displayed_images->push_back( NULL );
00048 }
00049
00050 int disp_size = (int)displayed_images->size();
00051 if ( disp_size < (image_id +1) ) {
00052 DEBUG_PRINT ("expanding vector...\n");
00053
00054 for ( int i=0; i < (image_id +1 - disp_size); i++ ) {
00055 displayed_images->push_back( NULL );
00056 }
00057 }
00058
00059 if ( (*displayed_images)[image_id] != NULL ) {
00060
00061 }
00062 (*displayed_images)[image_id] = image;
00063 }
00064
00065
00066 void omnistuff_create_image_context( char* window_id, void* callback_data )
00067 {
00068 DEBUG_PRINT ( "creating window %s\n", window_id );
00069 cvNamedWindow( window_id, 1 );
00070 }
00071
00072 void omnistuff_image_do_action( IplImage* image, int track_id,
00073 char* window_id, void* callback_data )
00074 {
00075
00076
00077
00078 cvShowImage( window_id, image );
00079 CV_WAIT_KEY( WAIT_KEY_VALUE );
00080
00081 os_store_and_replace( image, track_id );
00082
00083 }
00084
00085 void omnistuff_destroy_image_context( char* window_id, void* callback_data )
00086 {
00087 DEBUG_PRINT ( "destroying window %s\n", window_id );
00088 cvDestroyWindow( window_id );
00089 }
00090
00091
00092
00093
00094
00095
00096