c++ - OpenCV (C++) - 从已知的 3D 对象和相机位置计算图像的 2D 坐标

标签 c++ opencv camera

所以我已经知道 3D 相机位置和世界框架中物体的位置和大小,以及之前相机校准的相机矩阵和畸变系数。

我需要计算的是物体的二维图像坐标。假设对象是一个具有世界位置 objPos 和半径 objRad 的球体,因此我要为其找到坐标的图像将是图像位置 的圆imgPos 和半径 imgRad

我该怎么做?

干杯

最佳答案

在 OpenCV 中有一个函数可以在(相机)图像上投影 3D 坐标 - projectPoints在我看来,您拥有调用此函数所需的一切。参数是:

  1. 要投影的 ​​3D 坐标
  2. 相机旋转 - rvec
  3. 相机的位置 - tvec
  4. 相机矩阵 - 来自您的校准
  5. 相机畸变系数 - 来自您的校准
  6. 生成的 2D 图像坐标

如果您有 4x4 矩阵形式的外部相机参数,则必须从中提取 rvec 和 tvec (see here)。

以您的示例为例:我将生成具有相应半径的此类球体的 3D 坐标。在下一步中,我将使用上述方法投影这些 3D 坐标。

关于c++ - OpenCV (C++) - 从已知的 3D 对象和相机位置计算图像的 2D 坐标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47631875/

相关文章:

c++ - 如何从文件中读取多个表达式?

image-processing - 检测白色的最佳方法是什么?

ios - iPhone 拍摄照片并将其发布到数据库

ios - CIFilter filterWithCVPixelBuffer 在 iOS 中返回 nil

javascript - 使用 C++ 获取 HTTP get 参数

c++ - 必须单击按钮两次才能触发 C++

C++,boost asio,接收空终止字符串

c++ - C++ 中逗号分隔值的 `operator<<`

c++ - findHomography with RANSAC 错误异常值

c++ - 使用 DMA 仅从 DCMI 读取每秒的字节