--- /dev/null
+#! /usr/bin/env python
+
+import sys
+
+# import the necessary things for OpenCV
+from opencv import cv
+from opencv import 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
+
+if __name__ == '__main__':
+
+ # a small welcome
+ print "OpenCV Python capture video"
+
+ # 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 = int (sys.argv [1])
+
+ # got it ! so remove it from the arguments
+ del sys.argv [1]
+ except (IndexError, ValueError):
+ # no device number on the command line, assume we want the 1st device
+ device = 0
+
+ if len (sys.argv) == 1:
+ # no argument on the command line, try to use the camera
+ capture = highgui.cvCreateCameraCapture (device)
+ else:
+ # we have an argument on the command line,
+ # we can assume this is a file name, so open it
+ capture = highgui.cvCreateFileCapture (sys.argv [1])
+
+ # check that capture device is OK
+ if not capture:
+ print "Error opening capture device"
+ sys.exit (1)
+
+ # 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
+
+ # create the writer
+ writer = highgui.cvCreateVideoWriter ("captured.mpg", MPEG1VIDEO,
+ fps, frame_size, True)
+
+ # check the writer is OK
+ if not writer:
+ print "Error opening writer"
+ sys.exit (1)
+
+ while 1:
+ # do forever
+
+ # 1. capture the current image
+ frame = highgui.cvQueryFrame (capture)
+ if frame is None:
+ # no image captured... end the processing
+ break
+
+ # 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
+
+ # 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)