mirror of https://github.com/opencv/opencv.git
Open Source Computer Vision Library
https://opencv.org/
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
107 lines
2.7 KiB
107 lines
2.7 KiB
#! /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)
|
|
|