Metadata-Version: 2.4
Name: mini-camera-intrinsic
Version: 0.0.1
Summary: 按相机型号（DESAYSV/PONY）解析内参，返回统一 dict，支持保存为与 D02 一致的 YAML 格式。
License-Expression: MIT
Requires-Python: >=3.10
Description-Content-Type: text/markdown
Requires-Dist: PyYAML>=6.0
Provides-Extra: dev
Requires-Dist: pytest; extra == "dev"
Requires-Dist: build; extra == "dev"
Requires-Dist: twine; extra == "dev"

# mini-camera-intrinsic

按相机型号解析内参，返回统一字典；支持保存为与 D02（pb_calibration）一致的本地 YAML 格式。

## 安装

```bash
pip install mini-camera-intrinsic
```

## 功能

- **parse_intrinsics(camera_model, **kwargs)**：按相机型号解析，返回 `List[dict]`，每项与 D02 单组内参 YAML 同构。
- **save_intrinsics_to_dir(intrinsics_list, output_dir)**：将上述列表写入 `output_dir/intrinsics/*.yaml`。

支持的相机型号（硬编码）：`DESAYSV`、`PONY`。

## 快速开始

### DESAYSV

需提供 log 来源（目录或文件列表）与 camera_id 映射（文件或 dict）：

```python
from mini_camera_intrinsic import parse_intrinsics, save_intrinsics_to_dir, CAMERA_MODEL_DESAYSV

# 方式一：log 目录 + camera_id 文件
items = parse_intrinsics(
    CAMERA_MODEL_DESAYSV,
    log_dir="/path/to/log_dir",
    camera_id_path="/path/to/camera_id",
)

# 方式二：log 文件列表 + camera_id 映射
items = parse_intrinsics(
    CAMERA_MODEL_DESAYSV,
    log_paths=["/path/to/camera_30.log", "/path/to/camera_100.log"],
    camera_id_mapping={1: "front_30", 2: "front_120"},
)

# 返回 List[dict]，可保存到本地
save_intrinsics_to_dir(items, "/path/to/output_dir")
```

### PONY

需提供 log 文件路径：

```python
from mini_camera_intrinsic import parse_intrinsics, CAMERA_MODEL_PONY

items = parse_intrinsics(
    CAMERA_MODEL_PONY,
    log_path="/path/to/drivers_camera_pony.log.INFO.xxx",
)
# 或 file_path=...
```

### 返回格式（dict）

每条内参与 D02 单组 intrinsic YAML 一致，例如：

- `frame_id`: str  
- `model_type`: `"PINHOLE"` | `"FISHEYE"`  
- `pinhole`（或 `fisheye`）: `width`, `height`, `intrinsic`（9 个数）, `distortion`（4 或 8 个数）

便于 API 调用与 `save_intrinsics_to_dir` 入参。

## 依赖

- Python >= 3.10  
- PyYAML >= 6.0  

## License

MIT
