|
|
@ -2,10 +2,16 @@ |
|
|
|
import sys |
|
|
|
import sys |
|
|
|
|
|
|
|
|
|
|
|
if len(sys.argv) < 4: |
|
|
|
if len(sys.argv) < 4: |
|
|
|
print(f"{sys.argv[0]} <route> <segment> <frame number>") |
|
|
|
print(f"{sys.argv[0]} <route> <segment> <frame number> [front|wide|driver]") |
|
|
|
print('example: ./fetch_image_from_route.py "02c45f73a2e5c6e9|2020-06-01--18-03-08" 3 500') |
|
|
|
print('example: ./fetch_image_from_route.py "02c45f73a2e5c6e9|2020-06-01--18-03-08" 3 500 driver') |
|
|
|
exit(0) |
|
|
|
exit(0) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
cameras = { |
|
|
|
|
|
|
|
"front": "cameras", |
|
|
|
|
|
|
|
"wide": "ecameras", |
|
|
|
|
|
|
|
"driver": "dcameras" |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
import requests |
|
|
|
import requests |
|
|
|
from PIL import Image |
|
|
|
from PIL import Image |
|
|
|
from openpilot.tools.lib.auth_config import get_token |
|
|
|
from openpilot.tools.lib.auth_config import get_token |
|
|
@ -16,22 +22,22 @@ jwt = get_token() |
|
|
|
route = sys.argv[1] |
|
|
|
route = sys.argv[1] |
|
|
|
segment = int(sys.argv[2]) |
|
|
|
segment = int(sys.argv[2]) |
|
|
|
frame = int(sys.argv[3]) |
|
|
|
frame = int(sys.argv[3]) |
|
|
|
|
|
|
|
camera = cameras[sys.argv[4]] if len(sys.argv) > 4 and sys.argv[4] in cameras else "cameras" |
|
|
|
|
|
|
|
|
|
|
|
url = 'https://api.commadotai.com/v1/route/'+sys.argv[1]+"/files" |
|
|
|
url = f'https://api.commadotai.com/v1/route/{route}/files' |
|
|
|
r = requests.get(url, headers={"Authorization": "JWT "+jwt}, timeout=10) |
|
|
|
r = requests.get(url, headers={"Authorization": f"JWT {jwt}"}, timeout=10) |
|
|
|
assert r.status_code == 200 |
|
|
|
assert r.status_code == 200 |
|
|
|
print("got api response") |
|
|
|
print("got api response") |
|
|
|
|
|
|
|
|
|
|
|
cameras = r.json()['cameras'] |
|
|
|
segments = r.json()[camera] |
|
|
|
if segment >= len(cameras): |
|
|
|
if segment >= len(segments): |
|
|
|
raise Exception("segment %d not found, got %d segments" % (segment, len(cameras))) |
|
|
|
raise Exception("segment %d not found, got %d segments" % (segment, len(segments))) |
|
|
|
|
|
|
|
|
|
|
|
fr = FrameReader(cameras[segment]) |
|
|
|
fr = FrameReader(segments[segment]) |
|
|
|
if frame >= fr.frame_count: |
|
|
|
if frame >= fr.frame_count: |
|
|
|
raise Exception("frame %d not found, got %d frames" % (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]) |
|
|
|
im = Image.fromarray(fr.get(frame, count=1, pix_fmt="rgb24")[0]) |
|
|
|
fn = "uxxx_"+route.replace("|", "_")+"_%d_%d.png" % (segment, frame) |
|
|
|
fn = f"uxxx_{route.replace('|', '_')}_{segment}_{frame}.png" |
|
|
|
im.save(fn) |
|
|
|
im.save(fn) |
|
|
|
print(f"saved {fn}") |
|
|
|
print(f"saved {fn}") |
|
|
|
|
|
|
|
|
|
|
|