在之前学习爬虫项目中,得到的部分视频是有水印的,因此有能通过比较好的技术手段实现水印去除的需求。一般情况下,如果能获取到无水印的原始素材是最好,但某些网站本身的原始素材就是加了水印。对于这种情况,少量可以通过某些视频剪辑软件完成水印去除,但对于大量素材,依赖人工完成是不现实的。
这篇文章将提供一种方法,描述在特定类型视频中,使用技术手段完成水印去除的实现,仅供参考学习,请合理使用,避免法律风险。
主要的实现方式其实非常简单,主要是各种现有工具的整合,最终也达到了比较好的效果。在限定品类之后,去除效果评估合格率达到了97%。
在网上调研之后,主要有以下可参考的实现,可以看到,他们各自有不同的优势和缺点。
高端大气上AI
首先AI有比较高的接入成本和学习门槛,而且本身有些玄学。抛开算法,最终的效果还是依赖输入样本的训练。再回到我们素材自身,不同作者其水印会是变化的(id为水印)。算法训练,其实获得准确位置的能力有待确定。
总结缺点: 依赖众多,需要训练,Id+logo变化的情况预计训练模型不会容易适配,效果也不理想。
ffmpeg delogo
实际是在水印位置添加滤镜,类似毛玻璃效果。这种是比较直接的方式,但问题的核心变成了如何获取水印的位置。还有个问题就是,ffmpeg delogo 的效果在不同视频素材不稳定。例如,如果一个视频帧水印位置画面内容比较多,去除水印后会比较明显。不过一般情况下,水印在右上或者左上,画面内容相对较少。
总结缺点:产生模糊区域,需要确定位置和大小。
蒙版+opencv + python 逐帧处理
可否将视频处理成图片,然后再按每张图片来处理?当然理论是可行的,这就将问题变成了图片去水印,而且像openCV有比较成熟的去水印算法。但是几个问题。
首先是openCV的图片去水印需要一个蒙版,即有个纯色+水印的图片,当然也不太适合不同视频水印logo变化的情况。按每个视频创建蒙版也是没法做成自动化的。
另一个是视频处理成图片后,内容过大。测试中,一个19MB的1080P60hz视频,处理成图片变成了3GB大小,而且每帧处理也比较耗时,更不说合并成视频的耗时。
缺点明确: 生成蒙版+逐帧处理+耗时较大
总结,最后实际是采用了第四种方案和第二种的结合,当然这也是根据具体场景综合考虑的,未必就是通用和最优的实现。
如上面的介绍,最终识别部分方案可以汇总成如下的流程:既然已经知道了水印的位置和大小,就可以使用ffmpeg delogo 的方式来去除。绝大部分视频的处理效果是可以接受的。
用于在批量的截图中标记识别的水印,并打印出坐标
错位有以下几个原因造成。
以上就是本篇文章的所有内容,限于篇幅,部分细节没有全部补充。过程中某些情况下,虽然已经知道了方法,但是仍然需要花大量的时间去调试和验证才能知道最终的效果。当然最后也是在不断的实践下有了明显的提升。如之前所说,在控制输入样本的前提下,比如只选择右上角水印,尽量保证视频分辨率一致等,最终的评估合格率达到了97%,还是令人满意的。
Contact: 富联-富联娱乐-富联注册站
Phone: 13800000000
Tel: 400-123-4567
E-mail: admin@youweb.com
Add: Here is your company address