在ROS系统下调用摄像头后,因为图像没有被标定,因此会出现畸变。ros系统下调用摄像头参考:ros下调用摄像头
ROS官方提供了用于单目或者双目标定的camera_calibration包。官方也给出了单目的标定教程和双目视觉的标定教程。本教程基于usb_cam package 读取图像,然后使用官方例程进行标定。具体操作步骤如下:
1.使用usb_cam读取图像
这个过程参考:usb_cam读取视频图像
2.检查usb_cam包发布的消息:
在一个新终端键入:
rostopic list
话题列表:
记住话题名字:
/usb_cam/camera_info
/usb_cam/image_raw
3.启动标定程序
rosrun camera_calibration cameracalibrator.py --size 11x8 --square 0.03 image:=/usb_cam/image_raw camera:=/usb_cam
上面image:就是话题名,如过不一样做适当修改。
其中参数是11*8的,在棋盘上横排标11个点,竖排8个点,该开始按个按键都是灰色的,如下图所示:
4.标定使用方法
为了得到一个好的标定结果,应该使得标定板尽量出现在摄像头视野的各个位置里:
如标定板出现在视野中的左边,右边,上边和下边,标定板既有倾斜的,也有水平的。界面中:
x:表示标定板在视野中的左右位置。
y:表示标定板在视野中的上下位置。
size:标定板在占视野的尺寸大小,也可以理解为标定板离摄像头的远近
skew:标定板在视野中的倾斜位置。
然后让你的标定板按照下图类似的占图比和角度在摄像头面前晃一下,终端会记录很多坐标数据:
以及棋牌占视野大部分的图片:
然后不断的慢慢移动,直到CALIBRAT按钮变亮了,如果点点标定的不错,就可以点击这个按钮,此时标定界面会变成灰色,无法操作状态,耐心等一下就好了。
标定完成后,你将看到下图所示的窗口:
也就是标定后的结果,纠正畸变。,摄像头输出信息再终端也会显示。
最后,如果满意标定结果,点击COMMIT按钮将结果默认保存到文件中,运行usb_cam的终端窗口会输出info
下次重启usb_cam时,就会自动调用标定保存的head_camera.yaml文件。
参考文献:https://blog.csdn.net/heyijia0327/article/details/43538695