dyfcalid
CameraCalibration
Python

Fisheye or Normal Camera Intrinsic and Extrinsic Calibration. Surround Camera Bird Eye View Generator.

Last updated Jun 25, 2026
865
Stars
220
Forks
18
Issues
0
Stars/day
Attention Score
40
Language breakdown
No language data available.
Files click to expand
README

Camera Calibration

集合了相机标定相关的多个脚本工具,便于完成完整的车载环视相机标定流程
各代码文件均可单独使用,此外也提供了外部接口以供调用
    License

DEMO

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) # 每次读入一张原始图片 更新标定结果 undistimg = calibrator.undistort(rawframe) # 使用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)              # 初始化内参标定器

示例结果: inCalib_result.jpg 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(srcraw, dstraw) # 输入对应的两张去畸变图像 得到单应性矩阵 src_warp = exCalib.warp() # 使用warp方法得到原始图像的变换结果

可以直接修改原文件中的各参数,或使用get_args()方法获取参数并修改
args = ExCalibrator.get_args()                      # 获取args参数 args.INPUT_PATH = './ExtrinsicCalibration/data/'    # 修改args参数 exCalib = ExCalibrator()                            # 初始化外参标定器
示例结果: exCalib_result.jpg

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()                                # 初始化环视鸟瞰生成器
示例结果:
camera.jpg
bev.jpg

Other Tools

collect.py可以开启相机完成图像或视频的数据采集undistort.py可以批量完成图像的去畸变处理decomposeH.py可以由单应性矩阵H和相机内参K得到旋转矩阵R和平移矩阵T (有多个结果需要筛选) 用timeAlign.py可以将以时间戳命名的图片按时间对准,得到对应的列表 用img2vid.py可以将图片转化为视频

License

GPL-3.0 License Copyright (c) 2021 ZZH

© 2026 GitRepoTrend · dyfcalid/CameraCalibration · Updated daily from GitHub