gpt4 book ai didi

c++ - opencv 相机校准 object_points 方向

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:42:51 25 4
gpt4 key购买 nike

我正在从事一个 opencv 项目,并遵循不同的来源,包括书籍和一些源代码。我发现书和一些源代码之间存在差异。当使用已知的棋盘校准相机时,我们定义了一个由棋盘角组成的对象点。例如左上角是(0,0),下一个是(0,1)。但是在书中坐标系用作(y,x),而在源代码中我在互联网上找到它的(x,y),正如我在示例中给出的那样。右边是 +x,下面是 +y。

书中代码:

for (int i=0; i<boardSize.height; i++) {
for (int j=0; j<boardSize.width; j++) {
objectCorners.push_back(cv::Point3f(i, j, 0.0f));
}
}

摘自源代码的片段:

 for (int i = 0; i < board_height; i++)
for (int j = 0; j < board_width; j++)
obj.push_back(Point3f((float)j * square_size, (float)i * square_size, 0));

哪个是正确的?

编辑:

我检查了本书的下一版本,作者在相关部分使用了相同的循环。

最佳答案

您为对象点选择的坐标系可以是任意的。

因此,您可以将棋盘的长边作为您的 x 轴、y 轴或 z 轴,还是对角线或房间中的任何其他位置,这取决于您。

您可能只需要记住所用坐标系的限制。它可能是笛卡尔的。这意味着如果您选择“错误”的顺序,您将从错误的一侧“看”到对象。也许这就是他们实验性地选择书中不同顺序的原因?

关于c++ - opencv 相机校准 object_points 方向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46062225/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com