Blame |
Last modification |
View Log
| RSS feed
#ifdef _WIN32
# include <windows.h>
#endif
#include <stdio.h>
#include <stdlib.h>
#ifndef __APPLE__
# include <GL/gl.h>
# include <GL/glut.h>
#else
# include <OpenGL/gl.h>
# include <GLUT/glut.h>
#endif
#include <AR/gsub.h>
#include <AR/video.h>
#include <AR/param.h>
#include <AR/ar.h>
//
// Camera configuration.
//
char *vconf
=
#if defined(_WIN32)
"Data\\WDM_camera_flipV.xml";
#elif defined(__APPLE__)
"";
#elif defined(__linux)
# if defined(AR_INPUT_GSTREAMER)
"";
# else
"";
# endif
#else
"";
#endif
int xsize
, ysize
;
int count
= 0;
char *cparam_name
= "Data/camera_para.dat";
ARParam cparam
;
static void init
(void);
static void cleanup
(void);
static void keyEvent
( unsigned char key
, int x
, int y
);
static void mainLoop
(void);
int main
(int argc
, char **argv
)
{
//initialize applications
glutInit
(&argc
, argv
);
init
();
//start video capture
arVideoCapStart
();
//start the main event loop
argMainLoop
( NULL
, keyEvent
, mainLoop
);
return 0;
}
static void keyEvent
( unsigned char key
, int x
, int y
)
{
/* quit if the ESC key is pressed */
if( key
== 0x1b ) {
printf("*** %f (frame/sec)\n", (double)count
/arUtilTimer
());
cleanup
();
exit(0);
}
}
/* main loop */
static void mainLoop
(void)
{
ARUint8
*dataPtr
;
/* grab a video frame */
if( (dataPtr
= (ARUint8
*)arVideoGetImage
()) == NULL
) {
arUtilSleep
(2);
return;
}
if( count
== 0 ) arUtilTimerReset
();
count
++;
/*draw the video*/
argDrawMode2D
();
argDispImage
( dataPtr
, 0,0 );
/* capture the next video frame */
arVideoCapNext
();
/*swap the graphics buffers*/
argSwapBuffers
();
}
static void init
( void )
{
ARParam wparam
;
/* open the video path */
if( arVideoOpen
( vconf
) < 0 ) exit(0);
/* find the size of the window */
if( arVideoInqSize
(&xsize
, &ysize
) < 0 ) exit(0);
printf("Image size (x,y) = (%d,%d)\n", xsize
, ysize
);
/* set the initial camera parameters */
if( arParamLoad
(cparam_name
, 1, &wparam
) < 0 ) {
printf("Camera parameter load error !!\n");
exit(0);
}
arParamChangeSize
( &wparam
, xsize
, ysize
, &cparam
);
/* open the graphics window */
argInit
( &cparam
, 1.0, 0, 0, 0, 0 );
}
/* cleanup function called when program exits */
static void cleanup
(void)
{
arVideoCapStop
();
arVideoClose
();
argCleanup
();
}