【问题标题】:How do I change the default checkerboard blocksize in OpenCV如何更改 OpenCV 中的默认棋盘格大小
【发布时间】:2015-02-05 21:40:39
【问题描述】:

我目前正在尝试使用 OpenCV 的校准工具箱,并且正在使用默认的棋盘格图案来校准相机。我想使用更大的棋盘格块,这样我就可以离相机更远,而不会影响 OpenCV 检测角落的能力。

据我了解,OpenCV 已使用默认块大小值进行预编程。我的问题是:有没有办法在代码中更改这个默认的块大小值?我会在哪里改变这个? TIA

【问题讨论】:

    标签: opencv camera-calibration


    【解决方案1】:

    OpenCV 不对您的图案的物理尺寸或图案尺寸做出任何假设。

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

    您为calibrateCamera 函数提供的唯一内容是objectPointsimagePoints

    这些参数的数组维度(大小)对应于图案的角数。

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

    【讨论】:

    • 好吧,这是有道理的,但您介意解释一下this 示例中的objp = np.zeros((6*7,3), np.float32)objp[:,:2] = np.mgrid[0:7,0:6].T.reshape(-1,2) 行吗?它似乎创建了一个包含角索引而不是坐标的数组(例如(3, 1, 0)而不是(0.09, 0.03, 0))
    • 它创建了一个 6x7 的 3D 点网格,其中每个坐标为 (x, y, 0)。 x 和 y 坐标由 meshgrid 函数创建,在这种情况下创建一个规则网格。在解释器中运行 meshgrid 命令并查看输出,希望它会很清楚。
    猜你喜欢
    • 2016-10-09
    • 2017-11-22
    • 2016-09-15
    • 2016-09-29
    • 1970-01-01
    • 1970-01-01
    • 2023-01-26
    • 2012-08-10
    • 1970-01-01
    相关资源
    最近更新 更多