# CameraCalibration-master **Repository Path**: binlicoder/camera-calibration-master ## Basic Information - **Project Name**: CameraCalibration-master - **Description**: ddddddddddddddddddddddd - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: second - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-07-31 - **Last Updated**: 2025-08-09 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 相机标定项目使用文档 ## 项目简介 这是一个基于Python和OpenCV的相机标定项目,主要用于: - 相机内参标定 - 图像预处理和滤波 - 棋盘格检测 - 像素到毫米的转换比例计算 - O型环检测和质量评估 ## 环境要求 - Python 3.7+ - Windows/Linux/macOS ## 安装步骤 1. **克隆项目** ```bash git clone <项目地址> cd CameraCalibration-master ``` 2. **创建虚拟环境(推荐)** ```bash python -m venv venv # Windows venv\Scripts\activate # Linux/macOS source venv/bin/activate ``` 3. **安装依赖** ```bash pip install -r requirements.txt ``` ## 项目结构 ``` CameraCalibration-master/ ├── src/ # 源代码目录 │ ├── images/ # 图像目录 │ │ ├── calibrated/ # 已标定图像 │ │ ├── uncalibrated/ # 未标定图像 │ │ └── raw_ring/ # 原始O型环图像 │ ├── thresh.py # 图像阈值处理和双边滤波 │ ├── intrinsic.py # 相机内参标定 │ ├── cv.py # OpenCV相机标定 │ ├── measure.py # 像素到毫米转换比例计算 │ ├── manual_measure.py # 手动测量工具 │ └── B00107064.py # O型环检测和质量评估 ├── save/ # 处理结果保存目录 ├── debug/ # 调试输出目录 ├── data/ # 测试数据目录 └── requirements.txt # 项目依赖 ``` ## 使用指南 ### 1. 图像预处理 (thresh.py) **功能**:对图像进行双边滤波处理,减少噪声并保持边缘清晰。 **使用方法**: ```bash python src\thresh.py ``` **输入**:`src/images/` 目录下的PNG图像 **输出**:处理后的图像保存到 `save/` 目录 **参数说明**: - 双边滤波参数:`cv.bilateralFilter(im, 0, 50, 30)` - 输入目录:`src/images/` - 输出目录:`save/` ### 2. 相机内参标定 (intrinsic.py) **功能**:使用棋盘格图像进行相机内参标定。 **使用方法**: ```bash python src\intrinsic.py ``` **输入**:`save/` 目录下的棋盘格图像 **输出**:相机内参矩阵和调试图像 **参数说明**: - 棋盘格模式:`(5, 7)` - 5列7行 - 方格尺寸:`1.5mm` - 输入目录:`save/` - 调试输出:`debug/` **注意事项**: - 确保棋盘格图像清晰,无模糊 - 棋盘格必须完整可见 - 建议使用多张不同角度的棋盘格图像 ### 3. OpenCV相机标定 (cv.py) **功能**:使用OpenCV内置函数进行相机标定。 **使用方法**: ```bash python src\cv.py ``` **输入**:`src/images/calibrated/1/` 目录下的棋盘格图像 **输出**:相机矩阵、畸变系数、旋转向量、平移向量 **处理流程**: 1. 读取棋盘格图像 2. 检测棋盘格角点 3. 计算相机参数 4. 对原始图像进行畸变校正 5. 保存校正后的图像到 `src/images/calibrated/2/` ### 4. 像素到毫米转换 (measure.py) **功能**:计算图像中像素到实际毫米的转换比例。 **使用方法**: ```bash python src\measure.py ``` **输入**:`src/images/calibrated/1/` 目录下的已标定棋盘格图像 **输出**:水平和垂直方向的像素到毫米转换比例 **计算公式**: - 水平比例 = 1.5mm / 平均水平像素距离 - 垂直比例 = 1.5mm / 平均垂直像素距离 ### 5. 手动测量工具 (manual_measure.py) **功能**:手动点击图像上的两点进行距离测量。 **使用方法**: ```bash python src\manual_measure.py ``` **操作说明**: 1. 运行脚本后会显示图像 2. 点击图像上的两个点 3. 程序会输出点击的坐标 ### 6. O型环检测 (B00107064.py) **功能**:自动检测O型环并进行质量评估。 **使用方法**: ```bash python src\B00107064.py ``` **输入**:`src/images/calibrated/2/` 目录下的已校正图像 **输出**:O型环检测结果、质量评估、可视化结果 **检测流程**: 1. 图像预处理和阈值化 2. 形态学操作(腐蚀、膨胀) 3. 连通组件标记 4. 质心计算 5. 半径测量 6. 质量评估 ## 常见问题解决 ### 1. 路径错误 **问题**:`FileNotFoundError: 系统找不到指定的路径` **解决**:确保从项目根目录运行脚本,路径已修复为相对路径 ### 2. 棋盘格检测失败 **问题**:`没有检测到任何棋盘格` **解决**: - 检查棋盘格图像是否清晰 - 确认棋盘格模式大小设置正确 - 确保棋盘格完整可见 ### 3. 空数组错误 **问题**:`Mean of empty slice` 或 `nan` 结果 **解决**: - 检查输入图像是否存在 - 确认图像格式正确 - 验证棋盘格检测是否成功 ### 4. 依赖包错误 **问题**:`ModuleNotFoundError` **解决**: ```bash pip install -r requirements.txt ``` ## 参数调整 ### 棋盘格参数 - `PATTERN_SIZE = (5, 7)`:棋盘格列数和行数 - `SQUARE_SIZE = 1.5`:方格实际尺寸(毫米) ### 图像处理参数 - 双边滤波:`cv.bilateralFilter(im, 0, 50, 30)` - 角点检测:`cv.CALIB_CB_CLUSTERING` ### O型环检测参数 - 允许误差:`allowed_diff = 2` - 形态学结构:3x3全1矩阵 ## 输出文件说明 - `save/`:预处理后的图像 - `debug/`:标定过程的调试图像 - `src/images/calibrated/2/`:畸变校正后的图像 ## 技术支持 如遇到问题,请检查: 1. Python版本是否兼容 2. 依赖包是否正确安装 3. 图像文件是否存在且格式正确 4. 棋盘格参数设置是否合适 ## 更新日志 - 修复了所有路径问题,使用相对路径 - 添加了详细的错误检查和提示 - 改进了代码的跨平台兼容性 - 优化了图像处理流程