async def marker_corners_cb(req: srpc.c.MarkersCorners.Request, ui: WsClient) -> srpc.c.MarkersCorners.Response: # TODO should be rather returned in an event (it is possibly a long-running process) return srpc.c.MarkersCorners.Response(data=await hlp.run_in_executor( calibration.markers_corners, req.args.camera_parameters, image_from_str(req.args.image)))
async def calibration_cb(req: srpc.c.GetCameraPose.Request, ui: WsClient) -> srpc.c.GetCameraPose.Response: # TODO estimated pose should be rather returned in an event (it is possibly a long-running process) return srpc.c.GetCameraPose.Response(data=await hlp.run_in_executor( calibration.estimate_camera_pose, req.args.camera_parameters, image_from_str(req.args.image), req.args.inverse, ))
def test_image_str() -> None: imarray = np.random.rand(16, 16, 3) * 255 img = Image.fromarray(imarray.astype("uint8")).convert("RGB") img_str = image_to_str(img, target_format="png") assert isinstance(img_str, str) img2 = image_from_str(img_str) diff = ImageChops.difference(img, img2) assert diff.getbbox() is None, "Difference image is not empty!"
async def get_camera_pose_cb(req: srpc.c.GetCameraPose.Request, ui: WsClient) -> srpc.c.GetCameraPose.Response: try: return srpc.c.GetCameraPose.Response(data=await hlp.run_in_executor( calibration.estimate_camera_pose, req.args.camera_parameters, image_from_str(req.args.image), req.args.inverse, )) except calibration.MarkerNotFound: # this is ok raise except calibration.CalibrationException as e: # this means a serious problem and should be logged glob.logger.warn(f"Failed to get camera pose. {str(e)}") raise
async def marker_corners_cb(req: srpc.c.MarkersCorners.Request, ui: WsClient) -> srpc.c.MarkersCorners.Response: return srpc.c.MarkersCorners.Response(data=await hlp.run_in_executor( calibration.markers_corners, req.args.camera_parameters, image_from_str(req.args.image)))