remove_watermark
如何去掉图片&视频中的水印
最近我家里的同志有一些图片处理的需求,他们最近在捣腾图片,但是好多网上的图片或者视频都有水印,他们想把这些水印去掉。当然在也有很多的途径可以做这个是,有的工具被集成在小程序里,但是有很多的广告,让人用起来很烦。除此之外当然还有一些专业的工具,比如说Adobe的PS,但是对于年龄大的人或者是说那些个对技术不太敏感的人有一些难度。所以我最近就研究了一下如何去掉水印,去掉水印的方式也有很多,可以用 ffmpeg
、opencv
或者一些机器学习的方式。下面我会用各种方式有一些实验,看看哪种方式的效果最好。
ffmpeg delogo
首先我使用了ffmpeg的过滤器 delogo
,根据官方文档所提供的参数,x,y,w,h(四个参数分别代表,从左上角开始的x坐标,从左右上角开始y坐标,需要处理的区域的宽度,需要处理的长度)。我们将使用下面的方式来获取delog的各种参数:
- )首先我们使用ffmpeg获取视频中某一秒的图片,
ffmpeg -ss 00:00:02 -i bullfinch-with-poster-overlay.mp4 -frames:v 1 bullfinch-with-poster-overlay-1s.jpg
,这段命令的含义是,将文件bullfinch-with-poster-overlay.mp4
第二秒的图片截取出来 - 然后我们在使用,在线工具photopea获取水印在图片中的位置,w=800,h=217,这里要注意的是,如果当前图片涉及保密信息你可以使用一些本地的图片工具
- 接着,我们再使用ffmpeg的delogo来去除这个区域的水印
- 这个命令我们是用来去除图片中的水印,
ffmpeg -y -i bullfinch-with-poster-overlay-1s.jpg -vf "delogo=x=1:y=0:w=800:h=217,scale=1920:1080" bullfinch-with-poster-overlay-1s-remove-wm.jpg
- 这个命令我们是用来去除视频中的水印,
ffmpeg -y -i bullfinch-with-poster-overlay.mp4 -vf "delogo=x=1:y=1:w=800:h=217,scale=1920:1080" bullfinch-with-poster-overlay-remove-wm.mp4
- 这个命令我们是用来去除图片中的水印,
- 结果
- 去除水印之后的图片
- 去除水印之后的视频
从上述的两张图片中,我们可以发现。delogo确实是可以实现水印的去处功能的,但是可能还是觉得没有达到完美的效果,与我而言也不够完美,所以我们继续使用OpenCV
吧。(如果大家没有很高的要求,delogo
的速度还是挺快的)
- 去除水印之后的图片
- FYI,上述的图片中的水印的大小是
800*217
,相对于大图片来说,算是一个比较大的图片,所以效果有点不尽人意。当我用了一个122*116
的图片时,水印去除的效果还算不错。所以delogo
过滤器用来去除小水印的效果应该还是可以的,也算是一个比较方便的工具。
OpenCV
- Title: remove_watermark
- Author: Xiao Qiang
- Created at : 2024-12-16 15:08:08
- Updated at : 2025-03-08 10:49:30
- Link: http://fdslk.github.io/tech/picture-processor/2024/12/16/remove-watermark/
- License: This work is licensed under CC BY-NC-SA 4.0.
Comments