gpt4 book ai didi

python - 给定点坐标和相机外参/内参,哪个 openCv 函数可用于计算 BEV 透视变换?

转载 作者:行者123 更新时间:2023-12-05 02:46:55 66 4
gpt4 key购买 nike

我的相机有 3x3 intrinsics4x3 extrinsics 矩阵,通过 cv2 获得。校准相机()

现在我想使用这些参数来计算从相机获得的帧中任何给定坐标的 BEV(鸟瞰图) 转换。

哪个 openCv 函数可用于计算给定点坐标和相机 extrinsics 和/或 BEV 透视变换内在函数 3x3 矩阵?

我在以下帖子中发现了一些非常相关的内容:https://deepnote.com/article/social-distancing-detector/基于 https://www.pyimagesearch.com/2014/08/25/4-point-opencv-getperspective-transform-example/ ,

他们正在使用 cv2.getPerspectiveTransform() 得到一个 3X3 矩阵,但我不知道这个矩阵是否代表 intrinsicsextrinsecs 或其他东西。然后他们通过以下方式使用此类矩阵转换点列表:

#Assuming list_downoids is the list of points to be transformed and matrix is the one obtained above
list_points_to_detect = np.float32(list_downoids).reshape(-1, 1, 2)
transformed_points = cv2.perspectiveTransform(list_points_to_detect, matrix)

我真的需要知道我是否可以使用这个 cv2.perspectiveTransform 函数来计算转换,或者是否有另一种更好的方法来使用 extrinsics 来计算转换,intrinsics 或两者,无需重复使用框架,因为我已经将检测到/选择的坐标保存在数组中。

最佳答案

答案是:如果您没有关于图像像素的距离相关信息,则无法计算场景的 BEV。

想一想:假设您有一个垂直屏幕的图片:那么鸟瞰图将是一条线。现在假设这个屏幕显示的是风景图像,并且这个屏幕的图片与风景图片本身没有区别。 BEV 仍然是一条线(不过是一条彩色线)。

现在,假设您有完全相同的图片,但这次不是屏幕图片,而是风景图片。然后,鸟瞰图不是一条线,更接近我们通常想象的 BEV。

最后,让我声明 OpenCV 无法知道您的图片是否描述了其他事物的平面(即使给定相机参数),因此,它无法计算您场景的 BEV。 cv2.perspectiveTransform 函数需要您向它传递一个homography 矩阵(您可以使用 cv2.findHomography() 获得一个矩阵,但您需要还有一些关于你的图像的距离信息)。

很抱歉给出否定的答案,但是仅考虑相机的内在和外在校准矩阵是无法解决您的问题的。

关于python - 给定点坐标和相机外参/内参,哪个 openCv 函数可用于计算 BEV 透视变换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65251663/

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