/* Allows user to view an array of images as a video. Keyboard controls are as follows: <ul> <li>Space - start and pause playback</li> <li>Page Down - skip forward 10 frames</li> <li>Page Up - jump back 10 frames</li> <li>Right Arrow - skip forward 1 frame</li> <li>Left Arrow - jump back 1 frame</li> <li>Backspace - jump back to beginning</li> <li>Esc - exit playback</li> <li>Closing the window also exits playback</li> </ul> @param imgs an array of images @param n number of images in \a imgs @param win_name name of window in which images are displayed */ void vid_view( IplImage** imgs, int n, char* win_name ) { int k, i = 0, playing = 0; cvNamedWindow( win_name, 1 ); cvShowImage( win_name, imgs[i] ); while( ! win_closed( win_name ) ) { /* if already playing, advance frame and check for pause */ if( playing ) { i = MIN( i + 1, n - 1 ); cvNamedWindow( win_name, 1 ); cvShowImage( win_name, imgs[i] ); k = cvWaitKey( 33 ); if( k == ' ' || i == n - 1 ) playing = 0; } else { k = cvWaitKey( 0 ); switch( k ) { /* space */ case ' ': playing = 1; break; /* esc */ case 27: case 1048603: cvDestroyWindow( win_name ); break; /* backspace */ case '\b': i = 0; cvNamedWindow( win_name, 1 ); cvShowImage( win_name, imgs[i] ); break; /* left arrow */ case 65288: case 1113937: i = MAX( i - 1, 0 ); cvNamedWindow( win_name, 1 ); cvShowImage( win_name, imgs[i] ); break; /* right arrow */ case 65363: case 1113939: i = MIN( i + 1, n - 1 ); cvNamedWindow( win_name, 1 ); cvShowImage( win_name, imgs[i] ); break; /* page up */ case 65365: case 1113941: i = MAX( i - 10, 0 ); cvNamedWindow( win_name, 1 ); cvShowImage( win_name, imgs[i] ); break; /* page down */ case 65366: case 1113942: i = MIN( i + 10, n - 1 ); cvNamedWindow( win_name, 1 ); cvShowImage( win_name, imgs[i] ); break; } } } }
/* Allows user to view an array of images as a video. Keyboard controls are as follows: <ul> <li>Space - start and pause playback</li> <li>Page Down - skip forward 10 frames</li> <li>Page Up - jump back 10 frames</li> <li>Right Arrow - skip forward 1 frame</li> <li>Left Arrow - jump back 1 frame</li> <li>Backspace - jump back to beginning</li> <li>Esc - exit playback</li> <li>Closing the window also exits playback</li> </ul> @param imgs an array of images @param n number of images in \a imgs @param win_name name of window in which images are displayed */ void vid_view( IplImage** imgs, int n, char* win_name ) { int k, i = 0, playing = 0; display_big_img( imgs[i], win_name ); while( ! win_closed( win_name ) ) { // if already playing, advance frame and check for pause if( playing ) { i = MIN( i + 1, n - 1 ); display_big_img( imgs[i], win_name ); k = cvWaitKey( 33 ); if( k == ' ' || i == n - 1 ) playing = 0; } else { k = cvWaitKey( 0 ); switch( k ) { // space case ' ': playing = 1; break; // esc case 27: case 1048603: cvDestroyWindow( win_name ); break; //backspace case '\b': i = 0; display_big_img( imgs[i], win_name ); break; // left arrow case 65288: case 1113937: i = MAX( i - 1, 0 ); display_big_img( imgs[i], win_name ); break; // right arrow case 65363: case 1113939: i = MIN( i + 1, n - 1 ); display_big_img( imgs[i], win_name ); break; // page up case 65365: case 1113941: i = MAX( i - 10, 0 ); display_big_img( imgs[i], win_name ); break; // page down case 65366: case 1113942: i = MIN( i + 10, n - 1 ); display_big_img( imgs[i], win_name ); break; } } } }