openCv版本:4.4.0
- 从源码处拷贝标定代码出来使用,需要拷贝samples/cpp/tutorial_code/calib3d/camera_calibration
需要的文件如下:
-rw-rw-r-- 1 rog rog 28490 Jul 18 2020 camera_calibration.cpp
-rw-rw-r-- 1 rog rog 3152 Jul 18 2020 in_VID5.xml
-rw-rw-r-- 1 rog rog 19220 Jul 18 2020 out_camera_data.yml
-rw-rw-r-- 1 rog rog 387 Jul 18 2020 VID5.xml
- 制作打印标定板
标定板制作:https://calib.io/pages/camera-calibration-pattern-generator
按照下面的选项设置参数导数PDF打印
- 拍摄照片:
4. 修改刚拷贝出来的文件VID5.xml 注意是相对路径 而且本人图片是放在phone_img目录下,根据你自己照片位置修改
<?xml version="1.0"?>
<opencv_storage>
<images>
..//image_1.jpg
../phone_img/image_2.jpg
../phone_img/image_3.jpg
../phone_img/image_4.jpg
../phone_img/image_6.jpg
../phone_img/image_8.jpg
../phone_img/image_9.jpg
../phone_img/image_10.jpg
../phone_img/image_11.jpg
../phone_img/image_12.jpg
../phone_img/image_13.jpg
</images>
</opencv_storage>
- 修改in_VID5.xml文件
#标定板宽的个数 注意是黑白交点个数 也就是角点个数
<BoardSize_Width>11</BoardSize_Width>
#标定板 高
<BoardSize_Height>8</BoardSize_Height>
#单个正方形的边长 拿尺子量
<Square_Size>19</Square_Size>
#是否沿水平轴反转照片
<Input_FlipAroundHorizontalAxis>1</Input_FlipAroundHorizontalAxis>
- 修改cmake 编译camera_calibration.cpp 注意指定你openCv路径
mkdir build
cd build
make
- 执行编译的程序
./Camera_Calibration ../in_VID5.xml
- 生成标定参数文件out_camera_data.xml
这里使用科学计数法,顺序依次是:fx 0 cx 0 fy cy 0 0 1
k1 k2 p1 p2 k3