advancedskrald/adapter.py

27 lines
686 B
Python

import base64
import json
import sys
import cv2
import numpy as np
from runner import find_keypoints
# Load base64 encoded image from stdin
stdin = sys.stdin.readline()
stdin_decoded = base64.b64decode(stdin)
img_array = np.frombuffer(stdin_decoded, dtype=np.uint8)
camera_img = cv2.imdecode(img_array, flags=cv2.COLOR_BGR2RGB)
camera_img = cv2.cvtColor(camera_img, cv2.COLOR_BGR2RGB)
# Find keypoints in image and pass them back to unity
src_points, dst_points = find_keypoints(camera_img)
# Finally, output to stdout for unity to read
result = {
"src_points": [p.tolist() for p in src_points],
"dst_points": [p.tolist() for p in dst_points],
}
print(json.dumps(result))