Mercurial Hosting > traffic-intelligence
diff python/cvutils.py @ 821:26daf35180ad
finished modification and demo script to replay synchronized video (with same frame rate)
author | Nicolas Saunier <nicolas.saunier@polymtl.ca> |
---|---|
date | Wed, 22 Jun 2016 16:36:12 -0400 |
parents | e73e7b644428 |
children | 2faabcbde2c4 |
line wrap: on
line diff
--- a/python/cvutils.py Wed Jun 22 15:23:20 2016 -0400 +++ b/python/cvutils.py Wed Jun 22 16:36:12 2016 -0400 @@ -146,8 +146,11 @@ newCameraMatrix[1,2] = newImgSize[1]/2. return cv2.initUndistortRectifyMap(intrinsicCameraMatrix, array(distortionCoefficients), identity(3), newCameraMatrix, newImgSize, cv2.CV_32FC1) - def playVideo(filenames, windowNames = None, firstFrameNum = 0, frameRate = -1, interactive = False, printFrames = True, text = None, rescale = 1., step = 1): + def playVideo(filenames, windowNames = None, firstFrameNums = None, frameRate = -1, interactive = False, printFrames = True, text = None, rescale = 1., step = 1): '''Plays the video(s)''' + if len(filenames) == 0: + print('Empty filename list') + return if windowNames is None: windowNames = ['frame{}'.format(i) for i in xrange(len(filenames))] wait = 5 @@ -162,9 +165,10 @@ if array([cap.isOpened() for cap in captures]).all(): key = -1 ret = True - frameNum = firstFrameNum - for cap in captures: - cap.set(cv2.cv.CV_CAP_PROP_POS_FRAMES, firstFrameNum) + 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]) while ret and not quitKey(key): rets = [] images = [] @@ -174,19 +178,18 @@ images.append(img) if array(rets).all(): if printFrames: - print('frame {0}'.format(frameNum)) - #if text is not None: - # cv2.putText(img, text, (10,50), cv2.FONT_HERSHEY_PLAIN, 1, cvRed) - for i in xrange(1, len(filenames)): - cvImshow(windowNames[i], images[i], rescale) - cvImshow(windowNames[0], images[0], rescale) # cv2.imshow('frame', img) + print('frame shown {0}'.format(nFramesShown)) + for i in xrange(len(filenames)): + if text is not None: + cv2.putText(images[i], text, (10,50), cv2.FONT_HERSHEY_PLAIN, 1, cvRed) + cvImshow(windowNames[i], images[i], rescale) # cv2.imshow('frame', img) key = cv2.waitKey(wait) if saveKey(key): cv2.imwrite('image-{}.png'.format(frameNum), img) - frameNum += step + nFramesShown += step if step > 1: - for cap in captures: - cap.set(cv2.cv.CV_CAP_PROP_POS_FRAMES, frameNum) + for i in xrange(len(captures)): + captures.set(cv2.cv.CV_CAP_PROP_POS_FRAMES, firstFrameNums[i]+nFramesShown) cv2.destroyAllWindows() else: print('Video captures for {} failed'.format(filenames))