from dataclasses import dataclass, fields @dataclass class Camera_Para: fx: float fy: float cx: int cy: int def read_camera_params(file_path) -> Camera_Para: # 初始化默认参数 params = Camera_Para(fx=0.0, fy=0.0, cx=0, cy=0) # 获取 dataclass 的字段信息(用于类型转换) field_types = {f.name: f.type for f in fields(params)} with open(file_path, 'r') as file: for line in file: line = line.strip() if line and '=' in line: key, value = line.split('=', 1) key = key.strip() value = value.strip() # 检查字段是否存在 if key in field_types: try: # 根据字段类型转换值 if field_types[key] == float: setattr(params, key, float(value)) elif field_types[key] == int: setattr(params, key, int(value)) except ValueError: print(f"Warning: Could not convert '{value}' to {field_types[key]} for '{key}'") return params