如何在OpenCV中更改默认棋盘格块大小
问题描述:
我目前正在使用OpenCV的校准工具箱进行实验,并使用默认棋盘图案来校准摄像头。我想使用较大的棋盘块,这样我就可以远离相机而不会影响OpenCV检测角落的能力。如何在OpenCV中更改默认棋盘格块大小
据我所知,OpenCV预设了预设的块大小值。我的问题是:有没有办法在代码中更改此默认块大小的值?我在哪里可以改变这个? TIA
答
OpenCV不会对您的模式的物理大小或模式大小做任何假设。
也就是说,您可以使用R行和C列的任何模式。 每块是1厘米还是1米也没关系。
您给calibrateCamera
函数唯一的是objectPoints
和imagePoints
。
这些参数的数组尺寸(尺寸)对应于图案角的数量。
objectPoints
应该包含您的检查角落的三维坐标(以及您的情况下的平面坐标,通过设置Z = 0)。这些角落应该缩放到棋盘的物理尺寸。也就是说,如果拐角具有行列索引(3,1)
并且每个块边为3厘米,则3D坐标将为(0.09, 0.03, 0.00)
。
好吧,这是有道理的,但你会介意解释行'objp = np.zeros((6 * 7,3),np.float32)'和 'objp [:,:2] = np.mgrid [ 0:7,0:6] .t.reshape(-1,2)'from [this](http://docs.opencv.org/trunk/doc/py_tutorials/py_calib3d/py_calibration/py_calibration.html#setup) exmple?它似乎创建了一个包含角点索引而不是坐标的数组(如(3,1,0)而不是(0.09,0.03,0)) – Yassie 2015-02-09 08:04:24
它创建了一个6x7的3D点网格,其中每个坐标为(x ,y,0)。 x和y坐标是由'meshgrid'函数创建的,在这种情况下会创建一个规则的网格。在解释器中运行meshgrid命令并查看输出结果,希望能够很清楚。 – 2015-02-09 09:04:01