所有
This commit is contained in:
45
vision.py
45
vision.py
@@ -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):
|
||||
|
||||
Reference in New Issue
Block a user