comparison python/cvutils.py @ 381:387cc0142211

script to replay event annotations
author Nicolas Saunier <nicolas.saunier@polymtl.ca>
date Fri, 19 Jul 2013 11:58:35 -0400
parents 22ddb8f85495
children 6da9cf5609aa
comparison
equal deleted inserted replaced
380:adfd4f70ee1d 381:387cc0142211
96 if lastCoordinate != None and lastCoordinate >=0: 96 if lastCoordinate != None and lastCoordinate >=0:
97 last = min(positions.length()-1, lastCoordinate) 97 last = min(positions.length()-1, lastCoordinate)
98 for i in range(0, last-1): 98 for i in range(0, last-1):
99 cv2.line(img, positions[i].asint().astuple(), positions[i+1].asint().astuple(), color) 99 cv2.line(img, positions[i].asint().astuple(), positions[i+1].asint().astuple(), color)
100 100
101 def playVideo(filename, firstFrameNum = 0, frameRate = -1): 101 def playVideo(filename, firstFrameNum = 0, frameRate = -1, interactive = False, printFrames = True, text = None):
102 '''Plays the video''' 102 '''Plays the video'''
103 wait = 5 103 wait = 5
104 if frameRate > 0: 104 if frameRate > 0:
105 wait = int(round(1000./frameRate)) 105 wait = int(round(1000./frameRate))
106 if interactive:
107 wait = 0
106 capture = cv2.VideoCapture(filename) 108 capture = cv2.VideoCapture(filename)
107 if capture.isOpened(): 109 if capture.isOpened():
108 key = -1 110 key = -1
109 ret = True 111 ret = True
110 frameNum = firstFrameNum 112 frameNum = firstFrameNum
111 capture.set(cv2.cv.CV_CAP_PROP_POS_FRAMES, firstFrameNum) 113 capture.set(cv2.cv.CV_CAP_PROP_POS_FRAMES, firstFrameNum)
112 while ret and not quitKey(key): 114 while ret and not quitKey(key):
113 ret, img = capture.read() 115 ret, img = capture.read()
114 if ret: 116 if ret:
115 print('frame {0}'.format(frameNum)) 117 if printFrames:
118 print('frame {0}'.format(frameNum))
116 frameNum+=1 119 frameNum+=1
120 if text != None:
121 cv2.putText(img, text, (10,50), cv2.FONT_HERSHEY_PLAIN, 1, cvRed)
117 cv2.imshow('frame', img) 122 cv2.imshow('frame', img)
118 key = cv2.waitKey(wait) 123 key = cv2.waitKey(wait)
119 cv2.destroyAllWindows() 124 cv2.destroyAllWindows()
120 125
121 def getImagesFromVideo(filename, nImages = 1, saveImage = False): 126 def getImagesFromVideo(filename, nImages = 1, saveImage = False):
137 cv2.imwrite('image{0:04d}.png'.format(numImg), img) 142 cv2.imwrite('image{0:04d}.png'.format(numImg), img)
138 else: 143 else:
139 images.append(img) 144 images.append(img)
140 return images 145 return images
141 146
142 def displayTrajectories(videoFilename, objects, homography = None, firstFrameNum = 0, lastFrameNumArg = None): 147 def displayTrajectories(videoFilename, objects, homography = None, firstFrameNum = 0, lastFrameNumArg = None, printFrames = True):
143 '''Displays the objects overlaid frame by frame over the video ''' 148 '''Displays the objects overlaid frame by frame over the video '''
144 capture = cv2.VideoCapture(videoFilename) 149 capture = cv2.VideoCapture(videoFilename)
145 if capture.isOpened(): 150 if capture.isOpened():
146 key = -1 151 key = -1
147 ret = True 152 ret = True
153 else: 158 else:
154 lastFrameNum = lastFrameNumArg 159 lastFrameNum = lastFrameNumArg
155 while ret and not quitKey(key) and frameNum < lastFrameNum: 160 while ret and not quitKey(key) and frameNum < lastFrameNum:
156 ret, img = capture.read() 161 ret, img = capture.read()
157 if ret: 162 if ret:
158 print('frame {0}'.format(frameNum)) 163 if printFrames:
164 print('frame {0}'.format(frameNum))
159 for obj in objects: 165 for obj in objects:
160 if obj.existsAtInstant(frameNum): 166 if obj.existsAtInstant(frameNum):
161 if not hasattr(obj, 'projectedPositions'): 167 if not hasattr(obj, 'projectedPositions'):
162 if homography != None: 168 if homography != None:
163 obj.projectedPositions = obj.positions.project(homography) 169 obj.projectedPositions = obj.positions.project(homography)