【问题标题】:How to keep a drawn rectangle in the same place as the camera moves around如何在相机四处移动时将绘制的矩形保持在同一位置
【发布时间】:2014-08-14 20:39:39
【问题描述】:

我有这个应用程序,其中在初始帧中绘制了一个矩形。我想知道是否可以从下一帧开始使矩形成为图像的一部分。

例如,在我的第一帧中,我会画出这样的东西,但会更暗一些 http://imgur.com/zACIiHJ

我希望它成为环境的一部分,这样下次我的相机访问该帧时,我应该会看到一个矩形框。如何使用 OpenCV 做到这一点?

编辑:我的算法在第一帧中找到并绘制矩形。我试图在相机四处移动时将矩形保持在同一个位置,并且矩形不必总是在白板上。

【问题讨论】:

  • @EdChum 我修改了我的问题
  • 您的问题有点含糊,您是在问是否可能。是的,这是可能的,你有什么问题?询问是否可以完成可以回答为“是”或成为一个非常广泛的问题,因为您尚未展示您对此的想法、方法、代码等。
  • 矩形总是在白板上吗?或者可以在任何地方(在任何物体上)绘制...
  • 您是否试图在相机四处移动时将矩形保持在同一位置(在白板上)?或者您是在问是否可以使用 opencv 在视频上绘制矩形(不是其预期目的)。
  • @Ron 我试图将矩形保持在相机四处移动的相同位置。

标签: c++ opencv computer-vision augmented-reality


【解决方案1】:

您想要实现的目标是可能的,但这需要您进行一些研究和工作。解决您的问题的一种可能方法是使用光流 (http://en.wikipedia.org/wiki/Optical_flow) 分析来监控相机视图中物体的明显运动。您可以使用生成的光流场对每帧之间的矩形角的位置应用“校正”。以下是 OpenCV 文档的链接,了解其光流功能:

http://docs.opencv.org/modules/gpu/doc/video.html

如果您使用的特定设备具有陀螺仪和 gps/ins,您也可以使用此数据来补充光流数据。告诉我进展如何,听起来是一个非常有趣的项目!

【讨论】:

    【解决方案2】:

    您需要一个与图像中的内容无关的静态矩形in?只需在捕获的每一帧上绘制一个矩形即可。

        Rect r = Rect( .. );
        rectangle( imageFromCam, r, Scalar( .. ) );
    

    cv::rectangle( )

    Rect

    【讨论】:

    • 这不起作用,因为我对图像的内容感兴趣。
    猜你喜欢
    • 1970-01-01
    • 2015-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多