Example #1
0
/*
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;
			}
		}
	}
}
Example #2
0
/*
  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;
	    }
	}
    }
}