代码之家  ›  专栏  ›  技术社区  ›  Krumelur

用OpenCV进行透视检测

  •  1
  • Krumelur  · 技术社区  · 14 年前

    如果我想检测透视扭曲对象(如矩形)并计算校正转换,那么什么方法是好方法?

    例如,我有很多照片是放在一个平面上的纸(照片是从一个角度拍摄的),我想纠正透视图,然后裁剪它们。

    我正在考虑使用Opencvpython绑定来创建一些东西。我认为这是一个“标准问题”,有很多例子,但我没有找到任何相关的信息。线索?

    编辑:我应该补充一点,我知道可以通过使用一些Web服务来完成它,但是我认为这是在学习opencv时做一些有用的事情的机会:)

    1 回复  |  直到 14 年前
        1
  •  3
  •   zerm    14 年前

    您必须准确地指定检测失真的含义。我假设您想要检测这样一张纸(或您的桌子/平面)的角,并使其与您的显示器的轴平行。这可以用 cvFindHomography cvWarpPerspective . 我刚才为python编写了一些示例代码,请注意,这些仍然是旧的绑定(不过,更新到opencv 2.0不需要很长时间): http://ioctl.eu/blog/2009/05/13/opencv_homography

    另一件事你显然要做的是检测角落。在我的示例代码中,用户需要使用鼠标单击四个角。在你的例子中,很难说出来,因为我需要一个例子。opencv提供了几种检测角的方法(参见harris),在示例中还应该有关于如何查找矩形的代码。如果你能更具体一点,我可能会更努力。

    更新 这对你来说可能也很有趣:我刚刚听过一个关于处理图像中透视失真的讨论(例如,增加投影缩短)。它们需要大量的用户交互,但是要优化一些带有约束的网格以保持平滑的扭曲。 以下是ACM链接: http://portal.acm.org/citation.cfm?id=1778765.1778864 也许你可以从那篇论文和提到的参考文献中得出一些想法,但是我自己还没有读过。