You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

106 lines
3.6 KiB
Python

import os
import json
from datetime import datetime
# 全局配置字典
CAMERA_CONFIG_MAP = {} # {sn: config_dict}
CUT_CONFIG_MAP = {} # {filename_without_ext: config_dict}
DIRECTION_CAMERA = {}
TEMPLATE_CONFIG_MAP = {}
def load_camera_configs(config_dir="./config/camera"):
"""
加载 camera 配置,按 sn 建立映射
"""
if not os.path.exists(config_dir):
print(f"[ERROR] Camera config directory does not exist: {config_dir}")
return
for filename in os.listdir(config_dir):
if filename.endswith(".json"):
file_path = os.path.join(config_dir, filename)
try:
with open(file_path, "r", encoding="utf-8") as f:
config = json.load(f)
sn = config.get("sn")
if sn:
CAMERA_CONFIG_MAP[sn] = config
DIRECTION_CAMERA[config.get("direction")] = sn
print(f"Loaded camera config: {sn}")
else:
print(f"[WARN] No 'sn' found in {filename}")
except Exception as e:
print(f"[ERROR] Failed to load {file_path}: {e}")
def load_template_configs(config_dir="./config/template"):
"""
加载 camera 配置,按 sn 建立映射
"""
if not os.path.exists(config_dir):
print(f"[ERROR] Camera config directory does not exist: {config_dir}")
return
for filename in os.listdir(config_dir):
if filename.endswith(".json"):
file_path = os.path.join(config_dir, filename)
try:
with open(file_path, "r", encoding="utf-8") as f:
config = json.load(f)
type = config.get("type")
if type:
TEMPLATE_CONFIG_MAP[type] = config
print(f"Loaded camera config: {type}")
else:
print(f"[WARN] No 'sn' found in {filename}")
except Exception as e:
print(f"[ERROR] Failed to load {file_path}: {e}")
load_camera_configs()
def load_cut_configs(config_dir="./config/cut"):
"""
加载 cut 配置,按文件名(不含扩展名)建立映射
"""
if not os.path.exists(config_dir):
print(f"[ERROR] Cut config directory does not exist: {config_dir}")
return
for filename in os.listdir(config_dir):
if filename.endswith(".json"):
file_path = os.path.join(config_dir, filename)
name_without_ext = os.path.splitext(filename)[0]
try:
with open(file_path, "r", encoding="utf-8") as f:
config = json.load(f)
CUT_CONFIG_MAP[name_without_ext] = config
print(f"Loaded cut config: {name_without_ext}")
except Exception as e:
print(f"[ERROR] Failed to load {file_path}: {e}")
def load_configs():
CAMERA_CONFIG_MAP = {} # {sn: config_dict}
CUT_CONFIG_MAP = {} # {filename_without_ext: config_dict}
DIRECTION_CAMERA = {}
TEMPLATE_MAP = {}
load_camera_configs()
load_cut_configs()
load_template_configs()
load_configs()
def save_path(type,end):
# 创建保存目录
today = datetime.now().strftime("%Y-%m-%d")
output_dir = os.path.join(".", "image",today,type)
os.makedirs(output_dir, exist_ok=True)
timestamp = datetime.now().strftime("%H%M%S%f")[:-3] # 精确到毫秒
file_name_prefix = f"{timestamp}_"+end
# 构造完整路径
save_path = os.path.join(output_dir,file_name_prefix)
return save_path