一个电视屏幕识别项目,我需要从一张图像中剪辑电视屏幕。
电视屏幕实际上是矩形的。但很明显,电视屏幕在手机摄像头的图像中变形了。我的问题是:
- 如何检测图像中的任何 4 边多边形(它不是矩形)。
- 在我知道图像上的多边形区域后,如何将该区域检索到 Mat。
- 解决任务2后,如何将 4 面多边形的 Mat 转换为固定 W/H 无线电的矩形 Mat。
提供一些代码示例以供参考是非常有帮助的。
谢谢你的回答!
一个电视屏幕识别项目,我需要从一张图像中剪辑电视屏幕。
电视屏幕实际上是矩形的。但很明显,电视屏幕在手机摄像头的图像中变形了。我的问题是:
提供一些代码示例以供参考是非常有帮助的。
谢谢你的回答!
如果您想检测电视屏幕的边缘,您可以使用一些边界检测(如 Canny),然后使用霍夫变换来获得线条。
如果然后提取与线的交点对应的点,则可以创建单应矩阵 H (3x3)。最后,使用这个 homography,您可以将原始图像“变形”到参考帧(在我们的例子中是具有给定纵横比的矩形)。单应性是从平面到平面的转换,所以这正是您在这里需要的。
如果您打算使用 OpenCV(这始终是一个不错的选择!),以下是您可以使用的功能:
Canny() - 查找图像中的边缘
HoughLines() - 检测线
findHomography() - 此函数从一组对应关系中找到单应矩阵。在您的情况下,您需要将该方法作为 0 传递。
warpPerspective() - 您将用来将图像“变形”到参考框架的函数。
显然,你可以为 MATLAB 和其他人找到类似的函数......
我希望这可以帮助你。