flandre/draft/sync_time_prepare.py
2025-06-10 20:35:01 +08:00

53 lines
1.5 KiB
Python

import json
from pathlib import Path
import cv2
import numpy as np
from nvidia import nvimgcodec
decoder = nvimgcodec.Decoder()
encoder = nvimgcodec.Encoder()
rec_folder = Path("/run/media/lambda/b86dccdc-f134-464b-a310-6575ee9ae85c/record2/")
robot_folder = rec_folder / "robot"
robot_folder = rec_folder / "robot"
d: dict[int, dict] = dict()
for file in robot_folder.glob("*"):
for line in file.read_text().splitlines():
s = line.split(",")
v = dict(
host_ts=int(s[0]),
device_ts=int(float(s[1]) * 10**9),
x=float(s[2]),
y=float(s[3]),
z=float(s[4]),
rx=float(s[5]),
ry=float(s[6]),
rz=float(s[7]),
fx=float(s[8]),
fy=float(s[9]),
fz=float(s[10]),
frx=float(s[11]),
fry=float(s[12]),
frz=float(s[13]),
)
d[v["host_ts"]] = v
(rec_folder / "robot.json").write_text(json.dumps(d))
for file in Path(
"/run/media/lambda/b86dccdc-f134-464b-a310-6575ee9ae85c/record2/camera_raw"
).glob("*.bin"):
fb = Path(file).read_bytes()
b = np.frombuffer(fb, dtype=np.uint8).reshape((1080, 1920, 3))
b = cv2.cvtColor(b, cv2.COLOR_BGR2RGB)
# cv2.imshow('',)
# cv2.waitKey(0)
# enc_params = nvimgcodec.EncodeParams(quality=5, chroma_subsampling=nvimgcodec.ChromaSubsampling.CSS_GRAY)
# encoder.write('a.jpg', b, params=enc_params)
encoder.write(
(file.parent.parent / "camera" / file.with_suffix(".jpg").name).__str__(), b
)