use*_*089 8 python opencv computer-vision perspectivecamera
我在考虑如何制作像豪华车中看到的四相机鸟瞰图时遇到了很多麻烦.这是我将用作这个问题的一个例子的原始...
现在,我已经做到了这样,图像是倾斜使用,.getPerspectiveTransform但这只是一个图像.
我显然需要四个,并且对如何将这些图像拼接在一起毫无头绪.如果图像看起来像这样,我也很无能为力.这是我目前的代码:
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()
Run Code Online (Sandbox Code Playgroud)
这是我大概想要的最终图像(朋友用Photoshop放在一起)......
要实现转换,您需要引用该getPerspectiveTransform函数。它需要:
dst:目标图像中对应四边形顶点的坐标。
我认为定义“src”和“dst”并不是一个容易的问题。它需要一些基于现实世界数据的计算,不能自己解决,只看图片。
所以对我来说,关键的想法是制定所需场景的计划(它必须是什么样子)。它应该使用真实数据,例如:
然后,您可以根据“虚拟鸟瞰相机的视口”的大小找到距离 EF 的合适值。在那之后,你的工作就快完成了。
该dst参数只是矩形IJLK(用于上层相机)的缩放版本。取决于输出图像的像素大小。
该src参数应该是在你的照片的矩形。它的宽度将填满整个图片。该高度必须从EF希望距离来计算。
它们是计算红色矩形高度的两种方法。要么在真实场景上放置“标记”(或者尝试检测一些)以自动找到水平线。或者,您可以尝试将其计算为相机仰角的复杂函数(但我想建议您,我认为这似乎很复杂)。
这是我解决这个问题的方法。我希望它有帮助:)
| 归档时间: |
|
| 查看次数: |
5019 次 |
| 最近记录: |