CameraCalibration
Fisheye or Normal Camera Intrinsic and Extrinsic Calibration. Surround Camera Bird Eye View Generator.
Install / Use
/learn @dyfcalid/CameraCalibrationREADME
Camera Calibration
集合了相机标定相关的多个脚本工具,便于完成完整的车载环视相机标定流程
各代码文件均可单独使用,此外也提供了外部接口以供调用
DEMO

Quick Start
克隆该仓库,运行main.py查看简单示例结果
确保已经安装好opencv(>=3.4.2) 以及numpy(>=1.19.2)
git clone https://github.com/dyfcalid/CameraCalibration.git
cd ./CameraCalibration
python main.py
File Tree
项目结构预览
│ main.py // 主程序
│
├─ExtrinsicCalibration
│ │ extrinsicCalib.ipynb // 外参标定代码(含注释)
│ │ extrinsicCalib.py // 外参标定python代码
│ │ README.md // 外参标定文档
│ │ __init__.py // init文件,API说明
│ │
│ └─data // 外参标定数据文件夹
│
├─IntrinsicCalibration
│ │ intrinsicCalib.ipynb // 内参标定代码(含注释)
│ │ intrinsicCalib.py // 内参标定python代码
│ │ README.md // 内参标定文档
│ │ __init__.py // init文件,API说明
│ │
│ └─data // 内参标定数据文件夹
│
├─SurroundBirdEyeView
│ │ surroundBEV.ipynb // 环视鸟瞰代码(含注释)
│ │ surroundBEV.py // 环视鸟瞰python代码
│ │ README.md // 环视鸟瞰文档
│ │ __init__.py // init文件,API说明
│ │
│ └─data // 环视鸟瞰参数文件夹
│ ├─front // 存放前相机K、D、H参数文件
│ ├─back // 存放后相机K、D、H参数文件
│ ├─left // 存放左相机K、D、H参数文件
│ └─right // 存放右相机K、D、H参数文件
│
└─Tools // 一些相关的标定工具
│ collect.py // 图像采集
│ undistort.py // 图像去畸变
└─data // 数据文件夹
Camera Intrinsic Calibration
相机内参标定
intrinsicCalib.py 查看文档
包括相机的在线标定和离线标定,包含鱼眼相机和普通相机模型,
并支持相机、视频、图像三种输入,生成相机内参和畸变向量
- 可以直接运行python文件,并通过argparse输入更多参数,argparse参数表详见文档
python intrinsicCalib.py
- 此外,提供
InCalibrator类供调用,使用说明如下,具体示例见main.py
from intrinsicCalib import InCalibrator
calibrator = InCalibrator(camera_type) # 初始化内参标定器
for img in images:
result = calibrator(img) # 每次读入一张原始图片 更新标定结果
undist_img = calibrator.undistort(raw_frame) # 使用undistort方法得到去畸变图像
或者调用CalibMode类,使用预设好的标定模式,各模式详见文档
from intrinsicCalib import InCalibrator, CalibMode
calibrator = InCalibrator(camera_type) # 初始化内参标定器
calib = CalibMode(calibrator, input_type, mode) # 选择标定模式
result = calib() # 开始标定
可以直接修改原文件中的各参数,或使用get_args()方法获取参数并修改
args = InCalibrator.get_args() # 获取args参数
args.INPUT_PATH = './IntrinsicCalibration/data/' # 修改args参数
calibrator = InCalibrator(camera_type) # 初始化内参标定器
示例结果:
<img src="https://i.loli.net/2021/06/22/nxOsU1mM4D3kJWS.png" width="750" height="200" alt="inCalib_result.jpg"/>
<img src="https://i.loli.net/2021/06/22/iVETOUIMqCRHDYr.png" width="750" height="300" alt="inCalib_image.jpg"/>
Camera Extrinsic Calibration
相机外参标定
extrinsicCalib.py 查看文档
完成相机的外参标定,实现任意两个视图(包含相同标定板)的转换,生成单应性变换矩阵
如:基于无人机相机和车载环视相机同时拍摄地面的标定板,进行车载相机的外参标定,
生成车载相机至无人机相机的单应性变换矩阵,实现鸟瞰图的转换(即将车载相机视角转换至无人机视角)
- 可以直接运行python文件,并通过argparse输入更多参数,argparse参数表详见文档
python extrinsicCalib.py
- 此外,提供
ExCalibrator类供调用,使用说明如下,具体示例见main.py
from extrinsicCalib import ExCalibrator
exCalib = ExCalibrator() # 初始化外参标定器
homography = exCalib(src_raw, dst_raw) # 输入对应的两张去畸变图像 得到单应性矩阵
src_warp = exCalib.warp() # 使用warp方法得到原始图像的变换结果
可以直接修改原文件中的各参数,或使用get_args()方法获取参数并修改
args = ExCalibrator.get_args() # 获取args参数
args.INPUT_PATH = './ExtrinsicCalibration/data/' # 修改args参数
exCalib = ExCalibrator() # 初始化外参标定器
示例结果:

Surround Camera Bird Eye View
环视相机鸟瞰拼接图生成
surroundBEV.py 查看文档
输入前后左右四张原始相机图像,生成鸟瞰图
包括直接拼接和融合拼接,并可以进行亮度平衡和白平衡
- 可以直接运行python文件,并通过argparse输入更多参数,argparse参数表详见文档
python surroundBEV.py
- 此外,提供
BevGenerator类供调用,使用说明如下,具体示例见main.py
from surroundBEV import BevGenerator
bev = BevGenerator() # 初始化环视鸟瞰生成器
surround = bev(front,back,left,right) # 输入前后左右四张原始相机图像 得到拼接后的鸟瞰图
上面生成的是直接拼接的结果,能够保证实时性,此外也可以使用融合和平衡,但速度较慢,如
bev = BevGenerator(blend=True, balance=True) # 使用图像融合以及平衡
surround = bev(front,back,left,right,car) # 可以加入车辆图片
可以直接修改原文件中的各参数,或使用get_args()方法获取参数并修改
args = BevGenerator.get_args() # 获取环视鸟瞰args参数
args.CAR_WIDTH = 200
args.CAR_HEIGHT = 350 # 修改为新的参数
bev = BevGenerator() # 初始化环视鸟瞰生成器
示例结果:
<div align=center><img src="https://i.loli.net/2021/06/22/fOwPsTYkCFeo8dW.png" width="740" height="170" alt="camera.jpg"/></div> <div align=center><img src="https://i.loli.net/2021/06/22/HeKJVBm2vEINy4z.png" width="360" height="400" alt="bev.jpg"/></div>Other Tools
用collect.py可以开启相机完成图像或视频的数据采集
用undistort.py可以批量完成图像的去畸变处理
用decomposeH.py可以由单应性矩阵H和相机内参K得到旋转矩阵R和平移矩阵T (有多个结果需要筛选)
用timeAlign.py可以将以时间戳命名的图片按时间对准,得到对应的列表
用img2vid.py可以将图片转化为视频
License
Copyright (c) 2021 ZZH
Related Skills
node-connect
344.4kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
claude-opus-4-5-migration
99.2kMigrate prompts and code from Claude Sonnet 4.0, Sonnet 4.5, or Opus 4.1 to Opus 4.5
frontend-design
99.2kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
model-usage
344.4kUse CodexBar CLI local cost usage to summarize per-model usage for Codex or Claude, including the current (most recent) model or a full model breakdown. Trigger when asked for model-level usage/cost data from codexbar, or when you need a scriptable per-model summary from codexbar cost JSON.
