diff python/cvutils.py @ 807:52aa03260f03 opencv3

reversed all code to OpenCV 2.4.13
author Nicolas Saunier <nicolas.saunier@polymtl.ca>
date Fri, 10 Jun 2016 15:26:19 -0400
parents 0662c87a61c9
children e73e7b644428
line wrap: on
line diff
--- a/python/cvutils.py	Fri Jun 10 12:29:58 2016 -0400
+++ b/python/cvutils.py	Fri Jun 10 15:26:19 2016 -0400
@@ -149,9 +149,9 @@
     def playVideo(filename, firstFrameNum = 0, frameRate = -1, interactive = False, printFrames = True, text = None, rescale = 1., step = 1):
         '''Plays the video'''
         windowName = 'frame'
+        wait = 5
         if rescale == 1.:
             cv2.namedWindow(windowName, cv2.WINDOW_NORMAL)
-        wait = 5
         if frameRate > 0:
             wait = int(round(1000./frameRate))
         if interactive:
@@ -161,58 +161,58 @@
             key = -1
             ret = True
             frameNum = firstFrameNum
-            capture.set(cv2.CAP_PROP_POS_FRAMES, firstFrameNum)
+            capture.set(cv2.cv.CV_CAP_PROP_POS_FRAMES, firstFrameNum)
             while ret and not quitKey(key):
-                #ret, img = capture.read()
-                for i in xrange(step):
-                    ret, img = capture.read()
+                ret, img = capture.read()
                 if ret:
                     if printFrames:
                         print('frame {0}'.format(frameNum))
-                    frameNum+=step
                     if text is not None:
-                       cv2.putText(img, text, (10,50), cv2.FONT_HERSHEY_PLAIN, 1, cvRed) 
-                    cvImshow(windowName, img, rescale)
+                       cv2.putText(img, text, (10,50), cv2.FONT_HERSHEY_PLAIN, 1, cvRed)
+                    cv2.imshow('frame', img)#cvImshow(windowName, img, rescale)
                     key = cv2.waitKey(wait)
                     if saveKey(key):
                         cv2.imwrite('image-{}.png'.format(frameNum), img)
+                    frameNum += step
+                    if step > 1:
+                        capture.set(cv2.cv.CV_CAP_PROP_POS_FRAMES, frameNum)
             cv2.destroyAllWindows()
         else:
             print('Video capture for {} failed'.format(filename))
 
     def infoVideo(filename):
         '''Provides all available info on video '''
-        cvPropertyNames = {cv2.CAP_PROP_FORMAT: "format",
-                           cv2.CAP_PROP_FOURCC: "codec (fourcc)",
-                           cv2.CAP_PROP_FPS: "fps",
-                           cv2.CAP_PROP_FRAME_COUNT: "number of frames",
-                           cv2.CAP_PROP_FRAME_HEIGHT: "heigh",
-                           cv2.CAP_PROP_FRAME_WIDTH: "width",
-                           cv2.CAP_PROP_RECTIFICATION: "rectification",
-                           cv2.CAP_PROP_SATURATION: "saturation"}
+        cvPropertyNames = {cv2.cv.CV_CAP_PROP_FORMAT: "format",
+                           cv2.cv.CV_CAP_PROP_FOURCC: "codec (fourcc)",
+                           cv2.cv.CV_CAP_PROP_FPS: "fps",
+                           cv2.cv.CV_CAP_PROP_FRAME_COUNT: "number of frames",
+                           cv2.cv.CV_CAP_PROP_FRAME_HEIGHT: "heigh",
+                           cv2.cv.CV_CAP_PROP_FRAME_WIDTH: "width",
+                           cv2.cv.CV_CAP_PROP_RECTIFICATION: "rectification",
+                           cv2.cv.CV_CAP_PROP_SATURATION: "saturation"}
         capture = cv2.VideoCapture(filename)
         if capture.isOpened():
-            for cvprop in [#cv2.CAP_PROP_BRIGHTNESS
-                    #cv2.CAP_PROP_CONTRAST
-                    #cv2.CAP_PROP_CONVERT_RGB
-                    #cv2.CAP_PROP_EXPOSURE
-                    cv2.CAP_PROP_FORMAT,
-                    cv2.CAP_PROP_FOURCC,
-                    cv2.CAP_PROP_FPS,
-                    cv2.CAP_PROP_FRAME_COUNT,
-                    cv2.CAP_PROP_FRAME_HEIGHT,
-                    cv2.CAP_PROP_FRAME_WIDTH,
-                    #cv2.CAP_PROP_GAIN,
-                    #cv2.CAP_PROP_HUE
-                    #cv2.CAP_PROP_MODE
-                    #cv2.CAP_PROP_POS_AVI_RATIO
-                    #cv2.CAP_PROP_POS_FRAMES
-                    #cv2.CAP_PROP_POS_MSEC
-                    #cv2.CAP_PROP_RECTIFICATION,
-                    #cv2.CAP_PROP_SATURATION
+            for cvprop in [#cv2.cv.CV_CAP_PROP_BRIGHTNESS
+                    #cv2.cv.CV_CAP_PROP_CONTRAST
+                    #cv2.cv.CV_CAP_PROP_CONVERT_RGB
+                    #cv2.cv.CV_CAP_PROP_EXPOSURE
+                    cv2.cv.CV_CAP_PROP_FORMAT,
+                    cv2.cv.CV_CAP_PROP_FOURCC,
+                    cv2.cv.CV_CAP_PROP_FPS,
+                    cv2.cv.CV_CAP_PROP_FRAME_COUNT,
+                    cv2.cv.CV_CAP_PROP_FRAME_HEIGHT,
+                    cv2.cv.CV_CAP_PROP_FRAME_WIDTH,
+                    #cv2.cv.CV_CAP_PROP_GAIN,
+                    #cv2.cv.CV_CAP_PROP_HUE
+                    #cv2.cv.CV_CAP_PROP_MODE
+                    #cv2.cv.CV_CAP_PROP_POS_AVI_RATIO
+                    #cv2.cv.CV_CAP_PROP_POS_FRAMES
+                    #cv2.cv.CV_CAP_PROP_POS_MSEC
+                    #cv2.cv.CV_CAP_PROP_RECTIFICATION,
+                    #cv2.cv.CV_CAP_PROP_SATURATION
             ]:
                 prop = capture.get(cvprop)
-                if cvprop == cv2.CAP_PROP_FOURCC and prop > 0:
+                if cvprop == cv2.cv.CV_CAP_PROP_FOURCC and prop > 0:
                     prop = int2FOURCC(int(prop))
                 print('Video {}: {}'.format(cvPropertyNames[cvprop], prop))
         else:
@@ -223,12 +223,12 @@
         images = []
         capture = cv2.VideoCapture(videoFilename)
         if capture.isOpened():
-            rawCount = capture.get(cv2.CAP_PROP_FRAME_COUNT)
+            rawCount = capture.get(cv2.cv.CV_CAP_PROP_FRAME_COUNT)
             if rawCount < 0:
                 rawCount = lastFrameNum+1
             nDigits = int(floor(log10(rawCount)))+1
             ret = False
-            capture.set(cv2.CAP_PROP_POS_FRAMES, firstFrameNum)
+            capture.set(cv2.cv.CV_CAP_PROP_POS_FRAMES, firstFrameNum)
             frameNum = firstFrameNum
             while frameNum<=lastFrameNum and frameNum<rawCount:
                 ret, img = capture.read()
@@ -244,7 +244,7 @@
                         images.append(img)
                     frameNum +=step
                     if step > 1:
-                        capture.set(cv2.CAP_PROP_POS_FRAMES, frameNum)
+                        capture.set(cv2.cv.CV_CAP_PROP_POS_FRAMES, frameNum)
             capture.release()
         else:
             print('Video capture for {} failed'.format(videoFilename))
@@ -253,7 +253,7 @@
     def getFPS(videoFilename):
         capture = cv2.VideoCapture(videoFilename)
         if capture.isOpened():
-            fps = capture.get(cv2.CAP_PROP_FPS)
+            fps = capture.get(cv2.cv.CV_CAP_PROP_FPS)
             capture.release()
             return fps
         else:
@@ -291,8 +291,8 @@
     def displayTrajectories(videoFilename, objects, boundingBoxes = {}, homography = None, firstFrameNum = 0, lastFrameNumArg = None, printFrames = True, rescale = 1., nFramesStep = 1, saveAllImages = False, undistort = False, intrinsicCameraMatrix = None, distortionCoefficients = None, undistortedImageMultiplication = 1., annotations = [], gtMatches = {}, toMatches = {}):
         '''Displays the objects overlaid frame by frame over the video '''
         capture = cv2.VideoCapture(videoFilename)
-        width = int(capture.get(cv2.CAP_PROP_FRAME_WIDTH))
-        height = int(capture.get(cv2.CAP_PROP_FRAME_HEIGHT))
+        width = int(capture.get(cv2.cv.CV_CAP_PROP_FRAME_WIDTH))
+        height = int(capture.get(cv2.cv.CV_CAP_PROP_FRAME_HEIGHT))
 
         windowName = 'frame'
         if rescale == 1.:
@@ -304,7 +304,7 @@
             key = -1
             ret = True
             frameNum = firstFrameNum
-            capture.set(cv2.CAP_PROP_POS_FRAMES, firstFrameNum)
+            capture.set(cv2.cv.CV_CAP_PROP_POS_FRAMES, firstFrameNum)
             if lastFrameNumArg is None:
                 lastFrameNum = maxint
             else:
@@ -364,7 +364,7 @@
                         cv2.imwrite('image-{{:0{}}}.png'.format(nZerosFilename).format(frameNum), img)
                     frameNum += nFramesStep
                     if nFramesStep > 1:
-                        capture.set(cv2.CAP_PROP_POS_FRAMES, frameNum)
+                        capture.set(cv2.cv.CV_CAP_PROP_POS_FRAMES, frameNum)
             cv2.destroyAllWindows()
         else:
             print('Cannot load file ' + videoFilename)
@@ -607,3 +607,15 @@
         return array(inputData, dtype = float32), array([classLabel]*nImages)
 
         
+#########################
+# running tests
+#########################
+
+if __name__ == "__main__":
+    import doctest
+    import unittest
+    suite = doctest.DocFileSuite('tests/cvutils.txt')
+    #suite = doctest.DocTestSuite()
+    unittest.TextTestRunner().run(suite)
+    #doctest.testmod()
+    #doctest.testfile("example.txt")