gpt4 book ai didi

python - OpenCV:4相机鸟瞰图?

转载 作者:太空狗 更新时间:2023-10-29 21:06:51 24 4
gpt4 key购买 nike

我在思考如何制作这样的四摄像头鸟瞰图时遇到了很多麻烦seen in luxury cars .这是我将用作此问题示例的原件... enter image description here

现在,我已经使用 .getPerspectiveTransform 使图像倾斜,但这仅适用于一张图像。

enter image description here

我显然需要四个,但对如何将这些图像拼接在一起一无所知。如果这就是图像的外观,我也一无所知。这是我目前拥有的代码:

import cv2 as cv
import numpy as np

img1 = cv.imread("testBird.jpg", cv.IMREAD_COLOR)
image = np.zeros((700, 700, 3), np.uint8)
src = np.array([[0,200],[480,200],[480,360],[0,360]],np.float32)
dst = np.array([[0,0],[480,0],[300,360],[180,360]],np.float32)

M = cv.getPerspectiveTransform(src, dst)
warp = cv.warpPerspective(img1.copy(), M, (480, 360))
cv.imshow('transform', warp)
cv.waitKey(0)
cv.destroyAllWindows()

这是我大致想要的最终图像(一位 friend 使用 Photoshop 拼凑而成)...

enter image description here

最佳答案

要实现变换,需要引用getPerspectiveTransform函数。它需要:

  • src:源图像中四边形顶点的坐标。
  • dst:目标图像中相应四边形顶点的坐标。

    我认为定义“src”和“dst”不是一个简单的问题。它需要根据真实世界的数据进行一些计算,并且无法仅通过查看图片自行解决。


所以对我来说,关键的想法是制定计划所需的场景(它必须看起来像什么)。它应该使用真实数据,例如:

  • 相机之间的距离
  • 摄像机的视角
  • 相机之间矩形的大小(灰色和白色网格)

enter image description here

然后您可以根据“您的虚拟鸟瞰相机的视口(viewport)”的大小找到合适的 E-F 距离值。在那之后,你的工作就快完成了。


dst 参数只是矩形的缩放版本 I J L K(用于上部相机)。取决于输出图像的像素大小。

src 参数应该是您照片中的一个矩形。它的宽度将填满整个图片高度必须根据 E-F 所需距离计算

enter image description here

它们是计算红色矩形高度的两种方法。 您在真实场景中放置“标记”(或者您尝试检测一些标记)以自动找到一条水平线。或者,您可以尝试将其计算为复杂的相机仰角的函数(但我想建议您,我认为这看起来很复杂)。

以下是我解决该问题的方法。我希望它有所帮助:)

关于python - OpenCV:4相机鸟瞰图?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37602383/

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