用图像替换帧中检测到的对象。(imageProcessing)

时间:2015-06-22 03:50:20

标签: php image image-processing ffmpeg

概述:

我正在制作一个视频创作项目。我使用的技术是:imageMagick,php,ffmpeg。

当前状态:

目前,该项目能够使用图像和文本创建视频,并且几乎没有基本过渡。我这样做的方法是使用imagemagick使用输入图像(在其中包含过渡效果)创建gif,然后将所有GIF转换为视频,并将视频连接在一起。

下一步(我的问题):

我现在准备把它提升到一个新的水平。所以,我所拥有的是一个视频(1920x1080),其中一些白帧(1280x720)在每帧中保持移位。我想用一些我希望使用的图像(1280x720)替换视频某些帧中出现的白色帧。请看这里的图像,你会得到一个想法:这些只是我视频中的两帧。如果你能仔细看到图像正在移动(白色空间不恒定)。

enter image description here

enter image description here

期望:

所以,我想用我自己的图像填充这些空白区域。如果案例只有一帧,我可以使用ffmpeg在精确的宽度和高度上叠加图像。但是这里的白色空间并不固定,并且在所有帧中都会移动,并且有很多帧。因此,我正在寻找类似opencv或其他技术的东西,可以用于视频或一组帧中的对象检测,并用其他图像替换检测到的区域。

我只是需要一脚。所以,如果有人已经在做过这样的事情,那就建议我使用什么技术。提前谢谢。

1 个答案:

答案 0 :(得分:1)

这完全取决于你可以假设的:

如果您可以安全地假设您的矩形边界从未以某种方式被遮挡(隐藏),您可以尝试在图像中找到边缘(如OpenCV' Canny边缘),然后查找矩形(角落形成一个扭曲的矩形,或非常流行的Hough Lines)。

如果您要查找的矩形始终为白色,则可以在HSV等颜色空间中对图像进行阈值处理,以查找最大值(HSV中的V~亮度),然后搜索二进制图像中的矩形搜索。 / p>

如果您的角落被遮挡,您有时需要对图像进行一些调整,例如形态操作("生长和收缩"二进制阈值图像),然后Hough Lines可以做到这一点。

请注意,这个答案假设一旦你知道矩形在哪里,"你已经完成了#34;,你只需要用自定义内容覆盖矩形。 我也不检查任何时间连续性:视频帧可能会根据矩形的逐帧外观跳转。您必须包含一些以前职位的知识。