Mercurial Hosting > traffic-intelligence
comparison scripts/manual-video-analysis.py @ 998:933670761a57
updated code to python 3 (tests pass and scripts run, but non-executed parts of code are probably still not correct)
author | Nicolas Saunier <nicolas.saunier@polymtl.ca> |
---|---|
date | Sun, 27 May 2018 23:22:48 -0400 |
parents | ab3a4cb524a9 |
children | 234e2228fd30 |
comparison
equal
deleted
inserted
replaced
997:4f3387a242a1 | 998:933670761a57 |
---|---|
1 #! /usr/bin/env python | 1 #! /usr/bin/env python3 |
2 | 2 |
3 import sys, argparse, cv2, numpy as np | 3 import sys, argparse, cv2, numpy as np |
4 | 4 |
5 parser = argparse.ArgumentParser(description=''''The program replays the video and allows to manually id vehicles and mark instants, eg when they cross given areas in the scene. Use this program in combination with a screen marker program (For example, Presentation Assistant) to draw multiple lines on the screen.''', | 5 parser = argparse.ArgumentParser(description=''''The program replays the video and allows to manually id vehicles and mark instants, eg when they cross given areas in the scene. Use this program in combination with a screen marker program (For example, Presentation Assistant) to draw multiple lines on the screen.''', |
6 epilog = '''The output should give you a .csv file with the same name as your video file with columns in this format: | 6 epilog = '''The output should give you a .csv file with the same name as your video file with columns in this format: |
20 Press s to skip 10 frames | 20 Press s to skip 10 frames |
21 Press c to go back 100 frames | 21 Press c to go back 100 frames |
22 Press x to go back 10 frames | 22 Press x to go back 10 frames |
23 Press spacebar to go forward one frame | 23 Press spacebar to go forward one frame |
24 Press l to skip to frame number | 24 Press l to skip to frame number |
25 Press Enter to finish inputting user characteristics (if any in pop up window) | 25 Press s to finish inputting user characteristics (if any in pop up window) |
26 Press q to quit and end program''') | 26 Press q to quit and end program''') |
27 # configuration of keys and user types (see moving) | 27 # configuration of keys and user types (see moving) |
28 userTypeNames = ['unknown', | 28 userTypeNames = ['unknown', |
29 'car', | 29 'car', |
30 'pedestrian', | 30 'pedestrian', |
80 for c in userConfigurations: | 80 for c in userConfigurations: |
81 print(c.getHelpStr()) | 81 print(c.getHelpStr()) |
82 | 82 |
83 # start of program | 83 # start of program |
84 cap = cv2.VideoCapture(args.videoFilename) | 84 cap = cv2.VideoCapture(args.videoFilename) |
85 cap.set(cv2.cv.CV_CAP_PROP_POS_FRAMES, args.firstFrameNum) | 85 cap.set(cv2.CAP_PROP_POS_FRAMES, args.firstFrameNum) |
86 fps = cap.get(cv2.cv.CV_CAP_PROP_FPS) | 86 fps = cap.get(cv2.CAP_PROP_FPS) |
87 print('Video at {} frames/s'.format(fps)) | 87 print('Video at {} frames/s'.format(fps)) |
88 cv2.namedWindow('Video', cv2.WINDOW_NORMAL) | 88 cv2.namedWindow('Video', cv2.WINDOW_NORMAL) |
89 | 89 |
90 # output filename | 90 # output filename |
91 if args.outputFilename is None: | 91 if args.outputFilename is None: |
100 lineNum = -1 | 100 lineNum = -1 |
101 out = open(outputFilename, 'a') | 101 out = open(outputFilename, 'a') |
102 | 102 |
103 while(cap.isOpened()): | 103 while(cap.isOpened()): |
104 ret, frame = cap.read() | 104 ret, frame = cap.read() |
105 frameNum = int(cap.get(cv2.cv.CV_CAP_PROP_POS_FRAMES)) | 105 frameNum = int(cap.get(cv2.CAP_PROP_POS_FRAMES)) |
106 cv2.putText(frame, str(frameNum), (1,20), cv2.FONT_HERSHEY_PLAIN, 1, (255, 0,0)) | 106 cv2.putText(frame, str(frameNum), (1,20), cv2.FONT_HERSHEY_PLAIN, 1, (255, 0,0)) |
107 cv2.imshow('Video',frame) | 107 cv2.imshow('Video',frame) |
108 | 108 |
109 key= cv2.waitKey(0) | 109 key= cv2.waitKey(0) |
110 | 110 |
121 key2 = ord('1') | 121 key2 = ord('1') |
122 cv2.namedWindow('Input', cv2.WINDOW_NORMAL) | 122 cv2.namedWindow('Input', cv2.WINDOW_NORMAL) |
123 attributeNum = 0 | 123 attributeNum = 0 |
124 while key2 != ord('s'): | 124 while key2 != ord('s'): |
125 attrImg = 255*np.ones((20*args.nAttributes, 20, 3)) | 125 attrImg = 255*np.ones((20*args.nAttributes, 20, 3)) |
126 for i in xrange(args.nAttributes): | 126 for i in range(args.nAttributes): |
127 if i == (attributeNum%args.nAttributes): | 127 if i == (attributeNum%args.nAttributes): |
128 cv2.putText(attrImg, str(config.attributes[i]), (1,20*(i+1)), cv2.FONT_HERSHEY_PLAIN, 1, (0, 0, 255)) | 128 cv2.putText(attrImg, str(config.attributes[i]), (1,20*(i+1)), cv2.FONT_HERSHEY_PLAIN, 1, (0, 0, 255)) |
129 else: | 129 else: |
130 cv2.putText(attrImg, str(config.attributes[i]), (1,20*(i+1)), cv2.FONT_HERSHEY_PLAIN, 1, (0, 255, 0)) | 130 cv2.putText(attrImg, str(config.attributes[i]), (1,20*(i+1)), cv2.FONT_HERSHEY_PLAIN, 1, (0, 255, 0)) |
131 cv2.imshow('Input', attrImg) | 131 cv2.imshow('Input', attrImg) |
151 elif key == ord('x'): | 151 elif key == ord('x'): |
152 cap.set(1,frameNum-10) | 152 cap.set(1,frameNum-10) |
153 elif key == ord('c'): | 153 elif key == ord('c'): |
154 cap.set(1,frameNum-100) | 154 cap.set(1,frameNum-100) |
155 elif key == ord('l'): | 155 elif key == ord('l'): |
156 frameNum = int(raw_input("Please enter the frame number you would like to skip to\n")) | 156 frameNum = int(input("Please enter the frame number you would like to skip to\n")) |
157 cap.set(cv2.cv.CV_CAP_PROP_POS_FRAMES,frameNum) | 157 cap.set(cv2.CAP_PROP_POS_FRAMES,frameNum) |
158 | 158 |
159 out.close() | 159 out.close() |
160 cap.release() | 160 cap.release() |
161 cv2.destroyAllWindows() | 161 cv2.destroyAllWindows() |
162 | 162 |