9 #define ERROR_FATAL(x) { fprintf(stderr, "%s:%d\t%s\n", __FILE__, __LINE__, x); exit(1); }
11 const char *argp_program_version
= "main git release";
12 const char *argp_program_bug_address
= "<blacklocist@gmail.com>";
14 static char doc
[] = "Runs the board interpreter with the specified "
15 "video device (0 by default).";
17 static char args_doc
[] = ""; // no args required
19 static struct argp_option options
[] = {
20 {"videoid", 'v', "ID", 0, "Use video device identified by integer ID"},
21 {"device", 'd', "DEV", 0, "Use video device DEV"},
31 static error_t
parse_opt(int key
, char *arg
, struct argp_state
*state
)
33 struct arguments
*arguments
= state
->input
;
38 arguments
->videoid
= atoi(arg
);
41 arguments
->device
= arg
;
44 if (state
->arg_num
> 0) // too many arguments
48 // do nothing, we need no arguments
51 return ARGP_ERR_UNKNOWN
;
57 static struct argp argp
= { options
, parse_opt
, args_doc
, doc
};
59 int main(int argc
, char **argv
)
61 struct arguments args
;
67 argp_parse(&argp
, argc
, argv
, 0, 0, &args
);
69 cvNamedWindow("win1", 1);
70 cvNamedWindow("win2", 1);
75 capture
= cvCaptureFromCAM(args
.videoid
);
76 printf("Opening camera %d...\n", args
.videoid
);
79 capture
= cvCaptureFromFile(args
.device
);
80 printf("Opening camera device %s...\n", args
.device
);
83 cvMoveWindow("win1",100,100);
84 cvMoveWindow("win2", 400,100);
89 IplImage
*frame
, *src
, *dest
;
93 ERROR_FATAL("Could not open camera for capturing");
96 if (!cvGrabFrame(capture
))
97 ERROR_FATAL("Could not capture frame from camera");
99 frame
= cvRetrieveFrame(capture
);
101 src
= cvCreateImage(cvSize(frame
->width
,frame
->height
),IPL_DEPTH_8U
,1);
102 dest
= cvCreateImage(cvSize(frame
->width
,frame
->height
),IPL_DEPTH_8U
,1);
107 switch(cvWaitKey(10))
112 printf("%f\n",maxval
);
116 printf("%f\n",maxval
);
123 if (!cvGrabFrame(capture
))
124 ERROR_FATAL("Could not capture frame from camera");
126 frame
= cvRetrieveFrame(capture
);
128 cvConvertImage(frame
,src
,0);
130 cvAdaptiveThreshold(src
,dest
,maxval
,CV_ADAPTIVE_THRESH_MEAN_C
,CV_THRESH_BINARY
,3,5);
132 cvShowImage("win1", frame
);
133 cvShowImage("win2", dest
);
137 cvReleaseImage(&src
);
138 cvReleaseImage(&dest
);
140 cvReleaseCapture(&capture
);
142 cvDestroyWindow("win1");