基于张正友棋盘格标定法的桌面软件,用于相机内参标定、图像去畸变,以及标定结果的物理尺寸验证与 Excel 报告导出。
- 相机标定:批量读取棋盘格照片,检测角点,求解内参矩阵与畸变系数(k1, k2, p1, p2, k3),输出
.npz/.txt - 畸变校正验证:加载标定文件,对验证图去畸变,在固定裁剪区域内自动检测棋盘格,测量格子物理长度并判定是否在容差内
- 图形界面:PyQt5 + Fluent 风格 UI,支持 JPG / PNG / HEIC
- 命令行:
camera_calibration.py与image_undistort.py可独立运行
- Python 3.8+
- macOS 或 Windows
cd calibration
python3 -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activate
pip install -r requirements.txtpython zhang_calibration_app.py标签页 1:标定与结果
- 点击「选择标定图片目录」,选择包含多张棋盘格照片的文件夹
- 设置内角点列数、行数(例如 9×6)与格子边长(mm)
- 点击「开始标定」,查看内参、畸变系数与重投影误差
- 导出
.npz标定文件
标签页 2:畸变校正验证
- 加载上一步生成的
.npz(或.txt)标定文件 - 选择验证图片目录
- 设置格子边长与容差(mm),系统自动去畸变并检测
- 查看矫正前/后对比图,导出 Excel 验证报告
更详细的界面说明见 软件手册.md。
python camera_calibration.py \
--mode calibrate \
--image_dir cali_data/data/image0 \
--pattern 9 6 \
--square_size 5.0输出写入项目根目录下的 train_result/(运行时自动创建)。
python camera_calibration.py --mode exportpython image_undistort.py \
--image cali_data/data/test_image/IMG_4757.jpg \
--calib train_result/txt_result/calibration_result_9x6.npz \
--square_size 5.0仓库包含最小示例集,可直接用于试跑:
cali_data/data/image0/— 标定用棋盘格照片(15 张)cali_data/data/test_image/— 验证用样例图
chmod +x build_mac_app.sh
./build_mac_app.sh
# 成功后:dist/ZhangCalibration.appcalibration/
├── zhang_calibration_app.py # GUI 入口
├── camera_calibration.py # 标定核心 + CLI
├── image_undistort.py # 去畸变验证 + CLI
├── requirements.txt
├── build_mac_app.sh # macOS 打包脚本
├── ZhangCalibration.spec # PyInstaller 配置
├── cali_data/data/ # 示例图片
└── 软件手册.md # 详细用户手册