from typing import Dict, List import cv2 import base64 import numpy as np def frame_to_base64(frame, format="JPEG"): """将 OpenCV 读取的图片帧转换为 Base64 编码的字符串""" # 将图片帧编码为 JPEG 或 PNG 格式 if format.upper() == "JPEG": encode_param = [int(cv2.IMWRITE_JPEG_QUALITY), 80] # JPEG 压缩质量 elif format.upper() == "PNG": encode_param = [int(cv2.IMWRITE_PNG_COMPRESSION), 9] # PNG 压缩级别 else: raise ValueError("Unsupported format. Use 'JPEG' or 'PNG'.") result, encoded_frame = cv2.imencode(f".{format.lower()}", frame, encode_param) if not result: raise ValueError("Failed to encode frame.") # 将编码后的字节流转换为 Base64 字符串 base64_string = base64.b64encode(encoded_frame).decode("utf-8") return base64_string # 自定义编码器和解码器 def encode_perspective(value: np.ndarray) -> List[List[float]]: return value.tolist() def decode_perspective(value: List[List[float]]) -> np.ndarray: return np.array(value)