在2d图像上查找3d透视图

问题描述 投票:0回答:2

我有这样的图像:enter image description here

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

python python-3.x opencv image-processing
2个回答
0
投票

@@ Chiefir,您没有足够的数据来获取所需的垂直线。

我相信您最好的机会是在图像中找到一条平行线,例如草地上的那些标记(绿色11点所在的位置)。

[某些方法会在假设垂直的直线世界(例如道路和建筑物的城市)的情况下自动在图像中寻找平行点,并获得3D姿势。我认为这些图片不会影响您的形象。


0
投票

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

一种方法是假设

  1. 导轨距地面的高度很小(与其与照相机的距离相比)。
  2. 在草中切下的“ 11”数字的长边垂直于红线。

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

您可以使用连接导轨支撑底部的线代替您的(大概)手绘红线来提高精度,因为它实际上是在地面上。

如果支撑栏杆的极点是垂直的(如图中更高的另一根栏杆所支撑的那样,它们不是垂直的,则可以计算消失点P,然后代替V在上面的方法中。

© www.soinside.com 2019 - 2024. All rights reserved.