You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
			
				
					38 lines
				
				1.1 KiB
			
		
		
			
		
	
	
					38 lines
				
				1.1 KiB
			| 
											5 years ago
										 | #!/usr/bin/env python3
 | ||
|  | import sys
 | ||
|  | 
 | ||
|  | if len(sys.argv) < 4:
 | ||
|  |   print("%s <route> <segment> <frame number>" % sys.argv[0])
 | ||
|  |   print('example: ./fetch_image_from_route.py "02c45f73a2e5c6e9|2020-06-01--18-03-08" 3 500')
 | ||
|  |   exit(0)
 | ||
|  | 
 | ||
|  | import requests
 | ||
|  | from PIL import Image
 | ||
|  | from tools.lib.auth_config import get_token
 | ||
|  | from tools.lib.framereader import FrameReader
 | ||
|  | 
 | ||
|  | jwt = get_token()
 | ||
|  | 
 | ||
|  | route = sys.argv[1]
 | ||
|  | segment = int(sys.argv[2])
 | ||
|  | frame = int(sys.argv[3])
 | ||
|  | 
 | ||
|  | url = 'https://api.commadotai.com/v1/route/'+sys.argv[1]+"/files"
 | ||
|  | r = requests.get(url, headers={"Authorization": "JWT "+jwt})
 | ||
|  | assert r.status_code == 200
 | ||
|  | print("got api response")
 | ||
|  | 
 | ||
|  | cameras = r.json()['cameras']
 | ||
|  | if segment >= len(cameras):
 | ||
|  |   raise Exception("segment %d not found, got %d segments" % (segment, len(cameras)))
 | ||
|  | 
 | ||
|  | fr = FrameReader(cameras[segment])
 | ||
|  | if frame >= fr.frame_count:
 | ||
|  |   raise Exception("frame %d not found, got %d frames" % (frame, fr.frame_count))
 | ||
|  | 
 | ||
|  | im = Image.fromarray(fr.get(frame, count=1, pix_fmt="rgb24")[0])
 | ||
|  | fn = "uxxx_"+route.replace("|", "_")+"_%d_%d.png" % (segment, frame)
 | ||
|  | im.save(fn)
 | ||
|  | print("saved %s" % fn)
 | ||
|  | 
 |