Mercurial > hg > nsaunier > traffic-intelligence
comparison python/cvutils.py @ 203:e2f31813ade6
added code to display trajectories on videa
| author | Nicolas Saunier <nicolas.saunier@polymtl.ca> |
|---|---|
| date | Tue, 06 Mar 2012 18:10:19 -0500 |
| parents | 8e7b354666ec |
| children | 966c2cd2bd9f |
comparison
equal
deleted
inserted
replaced
| 202:b0b964ba9489 | 203:e2f31813ade6 |
|---|---|
| 83 for i in range(cvmat.rows): | 83 for i in range(cvmat.rows): |
| 84 for j in range(cvmat.cols): | 84 for j in range(cvmat.cols): |
| 85 cvmat[i,j] = a[i,j] | 85 cvmat[i,j] = a[i,j] |
| 86 return cvmat | 86 return cvmat |
| 87 | 87 |
| 88 def draw(img, positions, color, lastCoordinate = None): | |
| 89 last = lastCoordinate+1 | |
| 90 if lastCoordinate != None and lastCoordinate >=0: | |
| 91 last = min(positions.length()-1, lastCoordinate) | |
| 92 for i in range(0, last-1): | |
| 93 cv2.line(img, positions[i].astuple(), positions[i+1].astuple(), color) | |
| 94 | |
| 88 def playVideo(filename): | 95 def playVideo(filename): |
| 89 '''Plays the video''' | 96 '''Plays the video''' |
| 90 capture = cv2.VideoCapture(filename) | 97 capture = cv2.VideoCapture(filename) |
| 91 if capture.isOpened(): | 98 if capture.isOpened(): |
| 92 key = -1 | 99 key = -1 |
| 93 while key!= 1048689: # 'q' | 100 while key!= 113: # 'q' |
| 94 ret, img = capture.read() | 101 ret, img = capture.read() |
| 95 if ret: | 102 if ret: |
| 96 cv2.imshow('frame', img) | 103 cv2.imshow('frame', img) |
| 97 key = cv2.waitKey(5) | 104 key = cv2.waitKey(5) |
| 98 | 105 |
| 108 ret, img = capture.read() | 115 ret, img = capture.read() |
| 109 if img.size>0: | 116 if img.size>0: |
| 110 images.append(img) | 117 images.append(img) |
| 111 return images | 118 return images |
| 112 | 119 |
| 120 def displayTrajectories(videoFilename, objects, homography = None): | |
| 121 '''Displays the objects overlaid frame by frame over the video ''' | |
| 122 capture = cv2.VideoCapture(videoFilename) | |
| 123 if capture.isOpened(): | |
| 124 key = -1 | |
| 125 frameNum = 1 | |
| 126 while key!= 113: # 'q' | |
| 127 ret, img = capture.read() | |
| 128 if ret: | |
| 129 print(frameNum) | |
| 130 for obj in objects: | |
| 131 if obj.existsAtInstant(frameNum): | |
| 132 #obj.getTimeInterval() | |
| 133 if homography != None and obj.getFirstInstant() == frameNum: | |
| 134 obj.projectedPositions = obj.positions.project(homography) | |
| 135 draw(img, obj.projectedPositions, cvRed, frameNum-obj.getFirstInstant()) | |
| 136 cv2.imshow('frame', img) | |
| 137 key = cv2.waitKey(50) | |
| 138 frameNum += 1 | |
| 139 | |
| 113 def printCvMat(cvmat, out = stdout): | 140 def printCvMat(cvmat, out = stdout): |
| 114 '''Prints the cvmat to out''' | 141 '''Prints the cvmat to out''' |
| 115 for i in xrange(cvmat.rows): | 142 for i in xrange(cvmat.rows): |
| 116 for j in xrange(cvmat.cols): | 143 for j in xrange(cvmat.cols): |
| 117 out.write('{0} '.format(cvmat[i,j])) | 144 out.write('{0} '.format(cvmat[i,j])) |
