gpt4 book ai didi

c++ - 如何使用opencv在视频中放置对象

转载 作者:行者123 更新时间:2023-11-28 00:32:47 25 4
gpt4 key购买 nike

好的,我已经使用棋盘图像来校准我的相机。这校准了场景的内在和外在参数。现在我想画一个物体放在我放置棋盘的 table 上。我的问题是需要相机的旋转和平移 vector 来做到这一点吗?如果是这样,我怎样才能在校准后得到这些?还是在 calibrateCamera 函数中考虑了这些 vector ?

基本上,在我校准相机之后,我现在如何绘制到表面顶部的场景中?

谢谢!

最佳答案

calibrateCamera 函数为您提供外部(旋转+平移)和内部(相机矩阵 K 和失真系数)。

这允许您将以棋盘坐标系表示的 3D 点投影到相机获取的图像中,例如使用 projectPoints 函数 (link)。使用这种方法,您可以通过使用 projectPoints 函数投影 3D 边缘,将线框对象直接绘制到图像中。

如果您想渲染更复杂的对象(即包括纹理等),这需要使用辅助渲染引擎,因为 OpenCV 不提供此类功能。您将不得不使用渲染引擎,比如 OpenGL,向其提供投影细节,从缓冲区中的相机视点检索渲染的对象,并将该缓冲区覆盖在您的初始图像之上。

但是,请注意,这种称为增强现实的结果有时看起来很奇怪,因为它没有考虑渲染对象与图像中观察到的场景之间的遮挡......适本地处理遮挡需要场景的 3D 模型。

关于c++ - 如何使用opencv在视频中放置对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22180923/

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