【问题标题】:OpenCV triangulatePoints - what are the correct coordinates to feed it with?OpenCV triangulatePoints - 喂它的正确坐标是什么?
【发布时间】:2015-10-13 18:04:52
【问题描述】:

以前,我使用另一种方法从两个 2D 图像中确定 3D 位置。对于那种(平庸的)方法,我必须获得具有图像中心原点的 2D 坐标。正因为如此,我得到了很多负值。 OpenCV通常使用let底角作为坐标原点(完全没有负值)

应用用户应该能够使用任何一种方法。我可以继续以这种方式收集 2D 坐标,还是必须更改它?如果没有,我是否必须使用图像的新中心点(cv::stereoCalibrate 的结果)而不是默认的中心点(frame.cols/2,frame.rows/2)?

【问题讨论】:

  • opencv 的原点几乎肯定在左上角
  • @chris 我的错,我很久以前就写过另一部分了....我根本不记得了

标签: c++ opencv triangulation


【解决方案1】:

使用OpenCV的triangulatePoints时,需要作为参数传递:

  • projectionMatrixA - 隐含包含相机的内在参数(焦距和主点偏移,即从左侧和顶部的像素偏移,应视为 0,0)
  • projectionMatrixB - 除了固有的相机参数外,投影矩阵还反映了相机相对于某些坐标系的位置。因此,如果您有两个相同的相机,两个投影矩阵仍然会有所不同,因为它们的位置不同。
  • 2D 点是使用projectionMatrixA 投影 3D 点的结果
  • 2D 点是使用projectionMatrixB 投影 3D 点的结果

要回答这个问题,二维点具有负值这一事实并没有错。

AFAIK,在calib 模块中,当处理 2D 点(像素坐标)时,坐标 (0,0) 应始终在图像的中心附近,而不是在左上角。所以很自然,图像左侧区域中的任何点都有 x

【讨论】:

    猜你喜欢
    • 2014-07-25
    • 1970-01-01
    • 2016-05-28
    • 1970-01-01
    • 2021-05-21
    • 1970-01-01
    • 2015-12-29
    • 2012-07-25
    • 1970-01-01
    相关资源
    最近更新 更多