使用棋盘格来进行摄像机标定¶
这节教程的目标是学习怎样通过一系列棋盘照片进行摄像机标定.
测试数据: 使用在你 data 或者 chess 文件夹下的照片.
- 编译带有例子的OpenCV,在cmake的配置中把 BUILD_EXAMPLES 项设置为 ON .
- 打开 bin 文件夹并使用 imagelist_creator 来创建一个包含你的照片列表的 XML/YAML 文件.
- 然后, 运行 calibration 例子来获取摄像机参数. 使用方格的大小等于3厘米.
姿势估计
现在, 让我们写一点代码来检测在一幅图像中的棋盘格,并获取他到摄像机的距离. 你可以使用同样的方法来针对任何已知三维几何结构的物体,这个物体可以在一幅图像中被检测到.
测试数据: 使用来自你的数据文件夹下的 chess_test*.jpg 图片.
-
创建一个空的控制台项目. 载入一幅图片:
Mat img = imread(argv[1], CV_LOAD_IMAGE_GRAYSCALE);
-
使用 findChessboard 函数来检测图片中的棋盘.
bool found = findChessboardCorners( img, boardSize, ptvec, CV_CALIB_CB_ADAPTIVE_THRESH );
-
现在, 定义一个容器 vector<Point