Working with 0.1 playback spd, but only 20kbps; commented out debug code

This commit is contained in:
Kevin Zhao 2024-05-08 20:22:46 -04:00
parent 74dcc919d6
commit f2e199949f
2 changed files with 86 additions and 20 deletions

View file

@ -94,6 +94,23 @@ if args.version == 0:
elif args.version == 1:
localize_corners = localize_corners_wrapper(args, input_crop_size)
# ####
# vid_frames = []
# # cap = cv2.VideoCapture("/Users/kevinzhao/Downloads/IMG_0994.MOV")
# cap = cv2.VideoCapture("vid_tiny_v1.mkv")
# data = None
# start_time = time.time()
# while data is None:
# ret, raw_frame = cap.read()
# if not ret:
# print("End of stream")
# break
# vid_frames.append(raw_frame)
# gtruth = cv2.cvtColor(vid_frames[0], cv2.COLOR_BGR2RGB)
# ####
if args.input.isdecimal():
args.input = int(args.input)
cap = cv2.VideoCapture(args.input)
@ -102,6 +119,7 @@ start_time = time.time()
while data is None:
try:
ret, raw_frame = cap.read()
# raw_frame = cv2.resize(raw_frame, (1024, 1024), interpolation=cv2.INTER_NEAREST) # TODO: remove
if not ret:
print("End of stream")
break
@ -114,7 +132,7 @@ while data is None:
raw_frame = raw_frame[X // 4: 3 * X // 4, Y // 4: 3 * Y // 4]
elif args.version == 1:
h, w, _ = raw_frame.shape
raw_frame = raw_frame[(h - input_crop_size) // 2:-(h - input_crop_size) // 2,
raw_frame = raw_frame[(h - input_crop_size) // 2:-(h - input_crop_size) // 2, # TODO: put back
(w - input_crop_size) // 2:-(w - input_crop_size) // 2]
cv2.imshow("", raw_frame)
@ -133,11 +151,23 @@ while data is None:
# Convert to new color space
# calibrated_frame = (np.squeeze(F @ (frame - origin)[..., np.newaxis]) >= 192).astype(np.uint8)
calibrated_frame = (np.squeeze(F @ (frame - origin)[..., np.newaxis]) >= 128).astype(np.uint8)
fig, axs = plt.subplots(1, 2)
axs[0].imshow(frame)
axs[1].imshow(calibrated_frame * 255)
plt.show()
# calibrated_frame = (np.squeeze(F @ (frame - origin)[..., np.newaxis]) >= 192).astype(np.uint8) * 255
calibrated_frame = (np.squeeze(F @ (frame - origin)[..., np.newaxis]) >= 150).astype(np.uint8) * 255
# fig, axs = plt.subplots(1, 2)
# axs[0].imshow(frame)
# axs[1].imshow(calibrated_frame)
# plt.show()
# fig, axs = plt.subplots(1, 2)
# correct_mask = np.logical_not((calibrated_frame != gtruth).any(axis=2))
# calibrated_frame_copy = calibrated_frame.copy()
# gtruth_copy = gtruth.copy()
# calibrated_frame_copy[correct_mask] = [0, 0, 0]
# gtruth_copy[correct_mask] = [0, 0, 0]
# axs[0].imshow(gtruth_copy)
# axs[1].imshow(calibrated_frame_copy)
# plt.show()
calibrated_frame = np.packbits(
np.concatenate(
(
@ -155,6 +185,7 @@ while data is None:
break
except Exception as e:
print(e)
cap.release()
with open(args.output, "wb") as f:
f.write(data)

View file

@ -208,26 +208,61 @@ def localize_corners_wrapper(args, input_crop_size, debug=False):
cheight = int(args.height * 0.15)
cwidth = int(args.width * 0.15)
cch = int(args.height * 0.15) // 4 - 1 # 0-indexed
ccw = int(args.width * 0.15) // 4 - 1
cch = int(args.height * 0.15) // 4
ccw = int(args.width * 0.15) // 4
# plt.imshow(cropped_frame)
# plt.show()
grid_coords = np.float32([
[ccw, cch],
[args.width - ccw, cch],
[ccw, args.height - cch],
[args.width - ccw, args.height - cch],
])
grid_coords -= 1/2
#
# grid_coords *= orig_w / args.width
# torch_frame = transforms_f.perspective(
# transforms.Compose([
# # transforms.Lambda(
# # lambda img: cv2.resize(img, (stage1_size, stage1_size), interpolation=cv2.INTER_NEAREST)),
# transforms.ToImage(),
# transforms.ToDtype(torch.float32, scale=True),
# ])(cropped_frame),
# orig_pred_pts,
# grid_coords,
# )
#
# torch_frame = cv2.resize(torch_frame.permute(1, 2, 0).numpy(), (args.width, args.height), interpolation=cv2.INTER_AREA)
# # torch_frame = cv2.resize(torch_frame.permute(1, 2, 0).numpy(), (args.width, args.height), interpolation=cv2.INTER_NEAREST)
#
# # torch_frame = transforms_f.resize(torch_frame, [args.height, args.width]).permute(1, 2, 0).numpy()
# # torch_frame = torch_frame.permute(1, 2, 0).numpy()
# cropped_frame = (torch_frame * 255).astype(np.uint8)
# plt.imshow(cropped_frame)
#
# plt.axis("off")
# plt.show()
# grid_coords = np.float32([
# [ccw, cch],
# [args.width - ccw - 1, cch],
# [ccw, args.height - cch - 1],
# [args.width - ccw - 1, args.height - cch - 1],
# ])
M = cv2.getPerspectiveTransform(
np.float32(orig_pred_pts),
np.float32(
[
[ccw, cch],
[args.width - ccw - 1, cch],
[ccw, args.height - cch - 1],
[args.width - ccw - 1, args.height - cch - 1],
]
),
grid_coords,
)
cropped_frame = cv2.warpPerspective(cropped_frame, M, (args.width, args.height))
# 1-index
cch += 1
ccw += 1
# cropped_frame = cv2.warpPerspective(cropped_frame, M, (args.width, args.height), flags=cv2.INTER_NEAREST)
padding = math.ceil(max(args.height, args.width) / 80) # arbitrary