- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的相机有 3x3
intrinsics
和 4x3
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 矩阵
,但我不知道这个矩阵是否代表 intrinsics
、extrinsecs
或其他东西。然后他们通过以下方式使用此类矩阵转换点列表:
#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/
我是一名优秀的程序员,十分优秀!