"atomic bomb" commit. Reorganized OpenCV directory structure
This commit is contained in:
107
samples/octave/capture-cam.m
Normal file
107
samples/octave/capture-cam.m
Normal file
@@ -0,0 +1,107 @@
|
||||
#! /usr/bin/env octave
|
||||
|
||||
## import the necessary things for OpenCV
|
||||
addpath("/home/x/opencv2/interfaces/swig/octave");
|
||||
source("/home/x/opencv2/interfaces/swig/octave/PKG_ADD_template");
|
||||
debug_on_error(true);
|
||||
debug_on_warning(true);
|
||||
crash_dumps_octave_core (0)
|
||||
cv;
|
||||
highgui;
|
||||
|
||||
## the codec existing in cvcapp.cpp,
|
||||
## need to have a better way to specify them in the future
|
||||
## WARNING: I have see only MPEG1VIDEO working on my computer
|
||||
H263 = 0x33363255;
|
||||
H263I = 0x33363249;
|
||||
MSMPEG4V3 = 0x33564944;
|
||||
MPEG4 = 0x58564944;
|
||||
MSMPEG4V2 = 0x3234504D;
|
||||
MJPEG = 0x47504A4D;
|
||||
MPEG1VIDEO = 0x314D4950;
|
||||
AC3 = 0x2000;
|
||||
MP2 = 0x50;
|
||||
FLV1 = 0x31564C46;
|
||||
|
||||
#############################################################################
|
||||
## so, here is the main part of the program
|
||||
|
||||
## a small welcome
|
||||
printf("OpenCV Octave capture video\n");
|
||||
|
||||
## first, create the necessary window
|
||||
highgui.cvNamedWindow ('Camera', highgui.CV_WINDOW_AUTOSIZE);
|
||||
|
||||
## move the new window to a better place
|
||||
#highgui.cvMoveWindow ('Camera', 10, 10);
|
||||
|
||||
try
|
||||
## try to get the device number from the command line
|
||||
device = int32 (argv(){1});
|
||||
catch
|
||||
## no device number on the command line, assume we want the 1st device
|
||||
device = -1;
|
||||
end_try_catch
|
||||
|
||||
## no argument on the command line, try to use the camera
|
||||
capture = highgui.cvCreateCameraCapture (device);
|
||||
|
||||
## check that capture device is OK
|
||||
if (!swig_this(capture))
|
||||
printf("Error opening capture device\n");
|
||||
exit (1);
|
||||
endif
|
||||
|
||||
## capture the 1st frame to get some propertie on it
|
||||
frame = highgui.cvQueryFrame (capture);
|
||||
|
||||
## get size of the frame
|
||||
frame_size = cv.cvGetSize (frame);
|
||||
|
||||
## get the frame rate of the capture device
|
||||
fps = highgui.cvGetCaptureProperty (capture, highgui.CV_CAP_PROP_FPS);
|
||||
if (fps == 0)
|
||||
## no fps getted, so set it to 30 by default
|
||||
fps = 30;
|
||||
endif
|
||||
|
||||
## create the writer
|
||||
writer = highgui.cvCreateVideoWriter ("captured.mpg", MPEG1VIDEO,
|
||||
fps, frame_size, true);
|
||||
|
||||
## check the writer is OK
|
||||
if (!swig_this(writer))
|
||||
printf("Error opening writer\n");
|
||||
exit(1);
|
||||
endif
|
||||
|
||||
while (1)
|
||||
## do forever
|
||||
|
||||
## 1. capture the current image
|
||||
frame = highgui.cvQueryFrame (capture);
|
||||
if (swig_this(frame) == 0)
|
||||
## no image captured... end the processing
|
||||
break
|
||||
endif
|
||||
|
||||
## write the frame to the output file
|
||||
highgui.cvWriteFrame (writer, frame);
|
||||
|
||||
## display the frames to have a visual output
|
||||
highgui.cvShowImage ('Camera', frame);
|
||||
|
||||
## handle events
|
||||
k = highgui.cvWaitKey (5);
|
||||
|
||||
if (k & 0x100 == 27)
|
||||
## user has press the ESC key, so exit
|
||||
break
|
||||
endif
|
||||
endwhile
|
||||
|
||||
|
||||
## end working with the writer
|
||||
## not working at this time... Need to implement some typemaps...
|
||||
## but exiting without calling it is OK in this simple application
|
||||
##highgui.cvReleaseVideoWriter (writer)
|
Reference in New Issue
Block a user