Mercurial > hg > nsaunier > traffic-intelligence
comparison scripts/extract-appearance-images.py @ 905:0e017178f7ab
correct bug in classify-objects script when correcting for distrotion
| author | Nicolas Saunier <nicolas.saunier@polymtl.ca> |
|---|---|
| date | Thu, 22 Jun 2017 23:40:16 -0400 |
| parents | 8f60ecfc2f06 |
| children | a57e6fbcd8e3 |
comparison
equal
deleted
inserted
replaced
| 904:8f60ecfc2f06 | 905:0e017178f7ab |
|---|---|
| 1 #! /usr/bin/env python | 1 #! /usr/bin/env python |
| 2 | 2 |
| 3 import numpy as np, cv2 | 3 import numpy as np, cv2 |
| 4 import argparse, os | 4 import argparse, os |
| 5 from pandas import read_csv | 5 from pandas import read_csv |
| 6 from matplotlib.pyplot import imsave | 6 from matplotlib.pyplot import imsave, imshow, figure |
| 7 | 7 |
| 8 import cvutils, moving, ml, storage | 8 import cvutils, moving, ml, storage |
| 9 | 9 |
| 10 parser = argparse.ArgumentParser(description='The program extracts labeled image patches to train the HoG-SVM classifier, and optionnally speed information') | 10 parser = argparse.ArgumentParser(description='The program extracts labeled image patches to train the HoG-SVM classifier, and optionnally speed information') |
| 11 parser.add_argument('--cfg', dest = 'configFilename', help = 'name of the configuration file', required = True) | 11 parser.add_argument('--cfg', dest = 'configFilename', help = 'name of the configuration file', required = True) |
| 51 width = int(capture.get(cv2.cv.CV_CAP_PROP_FRAME_WIDTH)) | 51 width = int(capture.get(cv2.cv.CV_CAP_PROP_FRAME_WIDTH)) |
| 52 height = int(capture.get(cv2.cv.CV_CAP_PROP_FRAME_HEIGHT)) | 52 height = int(capture.get(cv2.cv.CV_CAP_PROP_FRAME_HEIGHT)) |
| 53 | 53 |
| 54 if undistort: # setup undistortion | 54 if undistort: # setup undistortion |
| 55 [map1, map2] = cvutils.computeUndistortMaps(width, height, undistortedImageMultiplication, intrinsicCameraMatrix, distortionCoefficients) | 55 [map1, map2] = cvutils.computeUndistortMaps(width, height, undistortedImageMultiplication, intrinsicCameraMatrix, distortionCoefficients) |
| 56 height, width = map1.shape | |
| 56 | 57 |
| 57 print(timeInterval) | 58 print(timeInterval) |
| 58 if capture.isOpened(): | 59 if capture.isOpened(): |
| 59 ret = True | 60 ret = True |
| 60 frameNum = timeInterval.first | 61 frameNum = timeInterval.first |
| 67 print('frame number: {}'.format(frameNum)) | 68 print('frame number: {}'.format(frameNum)) |
| 68 if undistort: # undistort only if necessary | 69 if undistort: # undistort only if necessary |
| 69 img = cv2.remap(img, map1, map2, interpolation=cv2.INTER_LINEAR) | 70 img = cv2.remap(img, map1, map2, interpolation=cv2.INTER_LINEAR) |
| 70 for obj in objects: | 71 for obj in objects: |
| 71 if obj.existsAtInstant(frameNum): | 72 if obj.existsAtInstant(frameNum): |
| 72 if (obj.getFirstInstant()-frameNum)%args.nFramesStep == 0: # todo find next non zero image if none | 73 if (10+frameNum-obj.getFirstInstant())%args.nFramesStep == 0: # todo find next non zero image if none |
| 73 croppedImg = cvutils.imageBox(img, obj, frameNum, invHomography, width, height, classifierParams.percentIncreaseCrop, classifierParams.percentIncreaseCrop, classifierParams.minNPixels) | 74 croppedImg = cvutils.imageBox(img, obj, frameNum, invHomography, width, height, classifierParams.percentIncreaseCrop, classifierParams.percentIncreaseCrop, classifierParams.minNPixels) |
| 74 if croppedImg is not None: | 75 if croppedImg is not None: |
| 75 imsave(args.directoryName+os.sep+moving.userTypeNames[obj.getUserType()]+args.imagePrefix+'-{}-{}.png'.format(obj.getNum(), frameNum), croppedImg) | 76 imsave(args.directoryName+os.sep+moving.userTypeNames[obj.getUserType()]+os.sep+args.imagePrefix+'-{}-{}.png'.format(obj.getNum(), frameNum), croppedImg) |
| 76 elif obj.getLastInstant() == frameNum: | 77 elif obj.getLastInstant() == frameNum: |
| 77 objects.remove(obj) | 78 objects.remove(obj) |
| 78 frameNum += 1 | 79 frameNum += 1 |
| 79 | 80 |
| 80 # todo speed info: distributions AND min speed equiprobable | 81 # todo speed info: distributions AND min speed equiprobable |
