【问题标题】:OpenCV bird's eye view stitchingOpenCV 鸟瞰图拼接
【发布时间】:2020-12-25 15:12:30
【问题描述】:

所以我正在尝试为我的大学毕业项目生成鸟瞰图,并且我已经成功地完成了:

  1. 校准鱼眼摄像头并使其不失真(我使用四个摄像头,右、左、前、后)
  2. 使用感知变换为四帧中的每一帧生成鸟瞰图

现在我需要将它们缝合在一起,有人知道如何实现吗?我正在使用 python 和 OpenCv。 我尝试使用stitcher 类,但它不起作用:

stitcher = cv2.Stitcher.create(cv2.Stitcher_PANORAMA)
(status,result) = stitcher.stitch(warped) # warped is a list containing 4 images 
if (status == cv2.STITCHER_OK):
    print('Panorama Generated')
else:
    print('Panorama Generation Unsuccessful')

总是失败

【问题讨论】:

  • 状态值是多少?
  • 使用相同的世界点来计算透视变换,那么您只需使用适当的混合算法,如线性交叉混合。
  • @Hihikomori 状态值为 1
  • @Micka 谢谢你的回答,但我不太明白你的意思,我是opencv的新手,如果你能解释一下,会很有帮助
  • status 1 表示您的列表中包含 4 张图片的图片不足。

标签: python opencv


【解决方案1】:

我认为在这种情况下 cv2.Stitcher 正在返回 status=1 (ERR_NEED_MORE_IMGS),因为它无法估计图像之间的转换。

由于 BEV 图像可能看起来与缝合器要操作的标准图像完全不同,因此您可能需要调整类公开的各种参数。例如,您可以尝试将置信度阈值降低到某个值 stitcher.setPanoConfidenceThresh(0.0)。

如果您发布 BEV 图片也会有所帮助(即它们可以完全匹配吗?)。

顺便说一句:如果您将图像转换为 BEV,那么您可能已经有了相机外在因素(旋转和平移)。这足以在原点创建一个带有“虚拟”相机的共享 BEV。 Stitcher::stitch 涉及很多步骤——特征检测、匹配、变换估计、捆绑调整、混合。大多数步骤用于查找图像的转换,您应该已经知道了。所以在这里使用它有点矫枉过正。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-04-05
    • 2016-10-02
    • 1970-01-01
    • 2013-03-24
    • 2014-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多