2015-02-05 57 views
0

我目前正在使用OpenCV的校准工具箱进行实验,并使用默认棋盘图案来校准摄像头。我想使用较大的棋盘块,这样我就可以远离相机而不会影响OpenCV检测角落的能力。如何在OpenCV中更改默认棋盘格块大小

据我所知,OpenCV预设了预设的块大小值。我的问题是:有没有办法在代码中更改此默认块大小的值?我在哪里可以改变这个? TIA

回答

0

OpenCV不会对您的模式的物理大小或模式大小做任何假设。

也就是说,您可以使用R行和C列的任何模式。 每块是1厘米还是1米也没关系。

您给calibrateCamera函数唯一的是objectPointsimagePoints

这些参数的数组尺寸(尺寸)对应于图案角的数量。

objectPoints应该包含您的检查角落的三维坐标(以及您的情况下的平面坐标,通过设置Z = 0)。这些角落应该缩放到棋盘的物理尺寸。也就是说,如果拐角具有行列索引(3,1)并且每个块边为3厘米,则3D坐标将为(0.09, 0.03, 0.00)

+0

好吧,这是有道理的,但你会介意解释行'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

+0

它创建了一个6x7的3D点网格,其中每个坐标为(x ,y,0)。 x和y坐标是由'meshgrid'函数创建的,在这种情况下会创建一个规则的网格。在解释器中运行meshgrid命令并查看输出结果,希望能够很清楚。 – 2015-02-09 09:04:01

相关问题