diff python/cvutils.py @ 993:e8eabef7857c

update to OpenCV3 for python
author Nicolas Saunier <nicolas.saunier@polymtl.ca>
date Wed, 16 May 2018 21:06:52 -0400
parents 132d84ce9f0c
children 933670761a57
line wrap: on
line diff
--- a/python/cvutils.py	Fri Apr 13 16:48:02 2018 -0400
+++ b/python/cvutils.py	Wed May 16 21:06:52 2018 -0400
@@ -94,15 +94,6 @@
         H, mask = cv2.findHomography(srcPoints, dstPoints, method, ransacReprojThreshold)
         return H
 
-    def arrayToCvMat(a, t = cv2.CV_64FC1):
-        '''Converts a numpy array to an OpenCV CvMat, with default type CV_64FC1.'''
-        print('Deprecated, use new interface')
-        cvmat = cv2.cv.CreateMat(a.shape[0], a.shape[1], t)
-        for i in range(cvmat.rows):
-            for j in range(cvmat.cols):
-                cvmat[i,j] = a[i,j]
-        return cvmat
-
     def cvPlot(img, positions, color, lastCoordinate = None, **kwargs):
         if lastCoordinate is None:
             last = positions.length()-1
@@ -152,7 +143,7 @@
             nFramesShown = 0
             if firstFrameNums is not None:
                 for i in xrange(len(captures)):
-                    captures[i].set(cv2.cv.CV_CAP_PROP_POS_FRAMES, firstFrameNums[i])
+                    captures[i].set(cv2.PROP_POS_FRAMES, firstFrameNums[i])
             while ret and not quitKey(key):
                 rets = []
                 images = []
@@ -174,45 +165,45 @@
                     nFramesShown += step
                     if step > 1:
                         for i in xrange(len(captures)):
-                            captures[i].set(cv2.cv.CV_CAP_PROP_POS_FRAMES, firstFrameNums[i]+nFramesShown)
+                            captures[i].set(cv2.CAP_PROP_POS_FRAMES, firstFrameNums[i]+nFramesShown)
             cv2.destroyAllWindows()
         else:
             print('Video captures for {} failed'.format(filenames))
 
     def infoVideo(filename):
         '''Provides all available info on video '''
-        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"}
+        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"}
         capture = cv2.VideoCapture(filename)
         videoProperties = {}
         if capture.isOpened():
-            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
+            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
             ]:
                 prop = capture.get(cvprop)
-                if cvprop == cv2.cv.CV_CAP_PROP_FOURCC and prop > 0:
+                if cvprop == cv2.CAP_PROP_FOURCC and prop > 0:
                     prop = int2FOURCC(int(prop))
                 videoProperties[cvPropertyNames[cvprop]] = prop
         else:
@@ -224,12 +215,12 @@
         images = []
         capture = cv2.VideoCapture(videoFilename)
         if capture.isOpened():
-            rawCount = capture.get(cv2.cv.CV_CAP_PROP_FRAME_COUNT)
+            rawCount = capture.get(cv2.CAP_PROP_FRAME_COUNT)
             if rawCount < 0:
                 rawCount = lastFrameNum+1
             nDigits = int(floor(log10(rawCount)))+1
             ret = False
-            capture.set(cv2.cv.CV_CAP_PROP_POS_FRAMES, firstFrameNum)
+            capture.set(cv2.CAP_PROP_POS_FRAMES, firstFrameNum)
             frameNum = firstFrameNum
             while frameNum<lastFrameNum and frameNum<rawCount:
                 ret, img = capture.read()
@@ -245,7 +236,7 @@
                         images.append(img)
                     frameNum +=step
                     if step > 1:
-                        capture.set(cv2.cv.CV_CAP_PROP_POS_FRAMES, frameNum)
+                        capture.set(cv2.CAP_PROP_POS_FRAMES, frameNum)
             capture.release()
         else:
             print('Video capture for {} failed'.format(videoFilename))
@@ -254,7 +245,7 @@
     def getFPS(videoFilename):
         capture = cv2.VideoCapture(videoFilename)
         if capture.isOpened():
-            fps = capture.get(cv2.cv.CV_CAP_PROP_FPS)
+            fps = capture.get(cv2.CAP_PROP_FPS)
             capture.release()
             return fps
         else:
@@ -300,8 +291,8 @@
             colorType = 'default'
 
         capture = cv2.VideoCapture(videoFilename)
-        width = int(capture.get(cv2.cv.CV_CAP_PROP_FRAME_WIDTH))
-        height = int(capture.get(cv2.cv.CV_CAP_PROP_FRAME_HEIGHT))
+        width = int(capture.get(cv2.CAP_PROP_FRAME_WIDTH))
+        height = int(capture.get(cv2.CAP_PROP_FRAME_HEIGHT))
 
         windowName = 'frame'
         if rescale == 1.:
@@ -313,7 +304,7 @@
             key = -1
             ret = True
             frameNum = firstFrameNum
-            capture.set(cv2.cv.CV_CAP_PROP_POS_FRAMES, firstFrameNum)
+            capture.set(cv2.CAP_PROP_POS_FRAMES, firstFrameNum)
             if lastFrameNumArg is None:
                 lastFrameNum = float("inf")
             else:
@@ -374,7 +365,7 @@
                         cv2.imwrite('image-{{:0{}}}.png'.format(nZerosFilename).format(frameNum), img)
                     frameNum += nFramesStep
                     if nFramesStep > 1:
-                        capture.set(cv2.cv.CV_CAP_PROP_POS_FRAMES, frameNum)
+                        capture.set(cv2.CAP_PROP_POS_FRAMES, frameNum)
             cv2.destroyAllWindows()
         else:
             print('Cannot load file ' + videoFilename)
@@ -496,11 +487,11 @@
         try:
             flags = 0
             if fixK2:
-                flags += cv2.cv.CV_CALIB_FIX_K2
+                flags += cv2.CALIB_FIX_K2
             if fixK3:
-                flags += cv2.cv.CV_CALIB_FIX_K3
+                flags += cv2.CALIB_FIX_K3
             if zeroTangent:
-                flags += cv2.cv.CV_CALIB_ZERO_TANGENT_DIST
+                flags += cv2.CALIB_ZERO_TANGENT_DIST
             ret, camera_matrix, dist_coeffs, rvecs, tvecs = cv2.calibrateCamera(objpoints, imgpoints, gray.shape[::-1], None, None, flags = flags)
         except NameError:
             return None