Mercurial > hg > nsaunier > traffic-intelligence
comparison python/cvutils.py @ 435:17185fe77316
added error messages if video not opened
| author | Nicolas Saunier <nicolas.saunier@polymtl.ca> |
|---|---|
| date | Mon, 02 Dec 2013 16:39:50 -0500 |
| parents | 2be846d36dec |
| children | 5304299e53a5 |
comparison
equal
deleted
inserted
replaced
| 434:9a714f32fc9f | 435:17185fe77316 |
|---|---|
| 132 if text != None: | 132 if text != None: |
| 133 cv2.putText(img, text, (10,50), cv2.cv.CV_FONT_HERSHEY_PLAIN, 1, cvRed) | 133 cv2.putText(img, text, (10,50), cv2.cv.CV_FONT_HERSHEY_PLAIN, 1, cvRed) |
| 134 cvImshow('frame', img, rescale) | 134 cvImshow('frame', img, rescale) |
| 135 key = cv2.waitKey(wait) | 135 key = cv2.waitKey(wait) |
| 136 cv2.destroyAllWindows() | 136 cv2.destroyAllWindows() |
| 137 else: | |
| 138 print('Video capture for {} failed'.format(videoFilename)) | |
| 137 | 139 |
| 138 def getImagesFromVideo(videoFilename, firstFrameNum = 0, nFrames = 1, saveImage = False, outputPrefix = 'image'): | 140 def getImagesFromVideo(videoFilename, firstFrameNum = 0, nFrames = 1, saveImage = False, outputPrefix = 'image'): |
| 139 '''Returns nFrames images from the video sequence''' | 141 '''Returns nFrames images from the video sequence''' |
| 140 from math import floor, log10 | 142 from math import floor, log10 |
| 141 images = [] | 143 images = [] |
| 158 else: | 160 else: |
| 159 images.append(img) | 161 images.append(img) |
| 160 imgNum +=1 | 162 imgNum +=1 |
| 161 capture.release() | 163 capture.release() |
| 162 else: | 164 else: |
| 163 print('Video capture failed') | 165 print('Video capture for {} failed'.format(videoFilename)) |
| 164 return images | 166 return images |
| 165 | 167 |
| 166 def getFPS(videoFilename): | 168 def getFPS(videoFilename): |
| 167 capture = cv2.VideoCapture(videoFilename) | 169 capture = cv2.VideoCapture(videoFilename) |
| 168 if capture.isOpened(): | 170 if capture.isOpened(): |
| 169 fps = capture.get(cv2.cv.CV_CAP_PROP_FPS) | 171 fps = capture.get(cv2.cv.CV_CAP_PROP_FPS) |
| 170 capture.release() | 172 capture.release() |
| 171 return fps | 173 return fps |
| 172 else: | 174 else: |
| 173 print 'Cannot load file ' + videoFilename | 175 print('Video capture for {} failed'.format(videoFilename)) |
| 174 return None | 176 return None |
| 175 | 177 |
| 176 def imageBox(img, obj, frameNum, homography, width, height, px = 0.2, py = 0.2, pixelThreshold = 800): | 178 def imageBox(img, obj, frameNum, homography, width, height, px = 0.2, py = 0.2, pixelThreshold = 800): |
| 177 'Computes the bounding box of object at frameNum' | 179 'Computes the bounding box of object at frameNum' |
| 178 x = [] | 180 x = [] |
| 244 key = cv2.waitKey() | 246 key = cv2.waitKey() |
| 245 if saveKey(key): | 247 if saveKey(key): |
| 246 cv2.imwrite('image.png', img) | 248 cv2.imwrite('image.png', img) |
| 247 frameNum += 1 | 249 frameNum += 1 |
| 248 cv2.destroyAllWindows() | 250 cv2.destroyAllWindows() |
| 251 else: | |
| 252 print 'Cannot load file ' + videoFilename | |
| 249 | 253 |
| 250 def computeHomographyFromPDTV(cameraFilename, method=0, ransacReprojThreshold=3.0): | 254 def computeHomographyFromPDTV(cameraFilename, method=0, ransacReprojThreshold=3.0): |
| 251 '''Returns the homography matrix at ground level from PDTV format | 255 '''Returns the homography matrix at ground level from PDTV format |
| 252 https://bitbucket.org/hakanardo/pdtv''' | 256 https://bitbucket.org/hakanardo/pdtv''' |
| 253 import pdtv | 257 import pdtv |
