This commit is contained in:
yrx
2026-05-29 16:24:04 +08:00
parent 575e690868
commit 64722f4d73
17 changed files with 1647 additions and 77 deletions

View File

@@ -949,6 +949,51 @@ def start_save_shot_worker():
logger.info("[VISION] 存图 worker 线程已启动")
def enqueue_save_raw_shot(frame, shot_id=None, photo_dir=None):
"""
异步保存射箭原图(无算法标注)。需 SAVE_IMAGE_ENABLED 且 SAVE_RAW_SHOT_IMAGE_ENABLED。
文件名:{photo_dir}/shot_{shot_id}_raw.jpg
"""
if not getattr(config, "SAVE_RAW_SHOT_IMAGE_ENABLED", False):
return
if not getattr(config, "SAVE_IMAGE_ENABLED", True):
return
if not shot_id:
return
if photo_dir is None:
photo_dir = config.PHOTO_DIR
try:
img_cv = image.image2cv(frame, False, False)
img_copy = np.copy(img_cv)
except Exception as e:
logger = logger_manager.logger
if logger:
logger.error(f"[VISION] enqueue_save_raw_shot 复制图像失败: {e}")
return
def _job():
try:
try:
if photo_dir not in os.listdir("/root"):
os.mkdir(photo_dir)
except Exception:
pass
filename = f"{photo_dir}/shot_{shot_id}_raw.jpg"
out = image.cv2image(img_copy, False, False)
out.save(filename)
logger = logger_manager.logger
if logger:
logger.info(f"[VISION] 已保存射箭原图: {filename}")
prune_old_images_in_dir(photo_dir, config.MAX_IMAGES, logger, "[VISION]")
except Exception as e:
logger = logger_manager.logger
if logger:
logger.error(f"[VISION] 保存射箭原图失败: {e}")
threading.Thread(target=_job, daemon=True).start()
def enqueue_save_shot(result_img, center, radius, method, ellipse_params,
laser_point, distance_m, shot_id=None, photo_dir=None,
yolo_roi_xyxy=None):