1

一个电视屏幕识别项目,我需要从一张图像中剪辑电视屏幕。

电视屏幕实际上是矩形的。但很明显,电视屏幕在手机摄像头的图像中变形了。我的问题是:

  1. 如何检测图像中的任何 4 边多边形(它不是矩形)。
  2. 在我知道图像上的多边形区域后,如何将该区域检索到 Mat。
  3. 解决任务2后,如何将 4 面多边形的 Mat 转换为固定 W/H 无线电的矩形 Mat。

提供一些代码示例以供参考是非常有帮助的。

谢谢你的回答!

4

1 回答 1

2

如果您想检测电视屏幕的边缘,您可以使用一些边界检测(如 Canny),然后使用霍夫变换来获得线条。

如果然后提取与线的交点对应的点,则可以创建单应矩阵 H (3x3)。最后,使用这个 homography,您可以将原始图像“变形”到参考帧(在我们的例子中是具有给定纵横比的矩形)。单应性是从平面到平面的转换,所以这正是您在这里需要的。

如果您打算使用 OpenCV(这始终是一个不错的选择!),以下是您可以使用的功能:

  • Canny() - 查找图像中的边缘

  • HoughLines() - 检测线

  • findHomography() - 此函数从一组对应关系中找到单应矩阵。在您的情况下,您需要将该方法作为 0 传递。

  • warpPerspective() - 您将用来将图像“变形”到参考框架的函数。

显然,你可以为 MATLAB 和其他人找到类似的函数......

我希望这可以帮助你。

于 2012-08-15T16:28:21.967 回答