Mercurial Hosting > traffic-intelligence
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")