繁体   English   中英

在二维图像上查找 3d 透视图

[英]Find 3d perspective on 2d image

我有这样的图像: 在此处输入图像描述

我想找到一条与红线垂直的线(我的意思是与轨道垂直的线)。 如何使用 OpenCV 和 Python 执行此操作? 问题是相机的高度是未知的,可见的 90 度角不是真正的 90 度角。 我在这里找到了一个使用 OpenCV .projectPoints()方法的选项,但看起来它需要知道结果点的 position 并在那里传递一些向量。 有人可以帮助如何实现这一目标吗? 或者这甚至可能吗?

@Chiefir,您没有足够的数据来获得您要求的垂直线。

我相信你最好的机会是在图像中找到一些平行线,比如草地上的那些标记(就在绿色十一号所在的位置)。

一些方法会自动在图像中寻找平行线,假设一个垂直的直线世界(如道路和建筑物的城市),并获得 3D 姿势。 我认为这些对你的形象不起作用。

这张图片中几乎没有信息(实际上几乎没有)来实现您的目标,因此每个解决方案都必然是不精确的。 如果这是视频序列的一帧,您可以将下面的方法应用于围绕该帧的一系列帧,以提高其准确性。

一种方法是假设

  1. 轨道离地面的高度很小(与它们与相机的距离相比)。
  2. 草丛中剪出的“11”号的长边与红线垂直。

然后,您可以估计“11”的消失点V。 然后,从 V 到红线的一点绘制的任何线,通过构造,都是与红线表示的线正交的地平面上的线的图像。

您可以通过使用(可能是)手绘红线而不是使用连接轨道支撑底部点的线来提高准确性,因为这实际上是在地面上。

如果支撑栏杆的杆是垂直的(它们不是,如图中另一条轨道支撑的杆所证明的那样),您可以计算它们的消失点 P,然后在上述方法中使用 V 代替。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM