摄像机标定--很懒的方法

1.百度上找半天各种标定的方法,然而复制代码下来各种报错,或者就是没讲清楚到底怎么操作。

后来我突然想到opencv自带的例程说不到也有标定的代码,很幸运在sample/python/下找到了calibrate.py这个程序。

打开后里面有如下代码:

'''
camera calibration for distorted images with chess board samples
reads distorted images, calculates the calibration and write undistorted images

usage:
    calibrate.py [--debug <output path>] [--square_size] [<image mask>]

default values:
    --debug:    ./output/
    --square_size: 2.4
    <image mask> defaults to ../data/left*.jpg
'''

找到了关键点:上面我复制的代码的最后一行,这行说明,标定用的图片

保存在sample/data文件夹下,并且名字都为leftXX.jpg。进去后可以看到

有14张这样命名的图片。这时很机智的按它图片的样式打印了标定板,并

拍下了14张图片,以同样方式命名,接下来狸猫换太子,把自己摄像头拍

的照片放到data文件夹下,把它的替换掉。第二步,把square_size后面的

数字1.0换成标定板上方块的实际长宽。这里单位是cm。

到此,可达鸭眼睛一眨,发现事情并没完。

重新打开python文件夹下的calibrate.py文件,里面代码如下:

square_size = float(args.get('--square_size'))

    pattern_size = (9,6)
    pattern_points = np.zeros((np.prod(pattern_size), 3), np.float32)

我复制的代码第二行pattern_size,这是指你拍的图片中的点的个数,如果你不知道

怎么数,你就看一下它原来的图片每一行有几个点,竖着有几个点,与这个size对比

一下就知道该数哪些点了。

然后把你标定板上点的数量填到这个函数里,至此,完事。

在终端里python calibrate.py就完事了。

验证标定成功的几个方法:

1.检查output文件夹下的leftXX_undistorted.png。观察里面

的直线是不是非常直,而在原来的图片中的直线是不是有点弯。

2.查看终端的输出信息,如果fx 接近于fy,几乎相等或者就是相等,那基本就是标定正确了。

这个是我在ubuntu下操作的,在win10下我不懂怎么搞,但我估计大同小异,应该也是可以的。

如果python编译calibrate.py出现错误的话,那肯定是你没用python编译过opencv,有些库没装。

 

 

本文来源于微信公众号“ CV技术指南 ” 。更多内容与最新技术动态尽在公众号发布。

 

欢迎扫描下方二维码关注公众号“CV技术指南”,主要进行计算机视觉方向的论文解读,最新技术跟踪,以及CV技术的总结。

 

原创文章第一时间在公众号中更新,博客只在有空时间才更新少量公众号文章

 

 

posted @ 2018-11-03 23:57  CV技术指南(公众号)  阅读(818)  评论(0编辑  收藏  举报