利用python OpenCV去除视频水印
更新时间:2022年02月08日 10:57:48 作者:修炼之路
这篇文章主要介绍了利用python OpenCV去除视频水印,下面我们将利用视频的某一帧将图片的一些污点去掉,代码先从视频中导出一帧图片,然后统计需要删除按钮的坐标位置,然后再对视频中的每一帧图像做处理的函数,下面操作过程需要的小伙伴可以参考一下
上面的图片展示的是视频中的某一帧,需要将图片中的,实体拓展和退出全屏以及右上角的两个圆圈按钮给删除掉。
解决思路
一个很简单的想法就是,从图片上其它两块背景相同的地方,拷贝两个块替换掉按钮位置的块
用下面的代码先从视频中导出一帧图片,然后统计需要删除按钮的坐标位置
实现代码如下:
import cv2 # 创建读取视频的类 capture = cv2.VideoCapture("watermark.mp4") # 得到视频的高度 height = capture.get(cv2.CAP_PROP_FRAME_HEIGHT) # 得到视频的宽度 width = capture.get(cv2.CAP_PROP_FRAME_WIDTH) # 得到视频的帧数 count = capture.get(cv2.CAP_PROP_FRAME_COUNT) # 得到视频的帧速 fps = capture.get(cv2.CAP_PROP_FPS) # 对视频中的每一帧图像做处理的函数 def process_fun(image): #去除视频的水印 #需要注意的是第一个范围是y轴坐标的范围,第二个是x轴坐标的范围 image[380:511,1070:1212] = image[100:231,1070:1212] image[8:63,1111:1275] = image[8:63,800:964] return image #保存MP4的视频 fourcc = cv2.VideoWriter_fourcc('m', 'p', '4', 'v') # 创建写入视频的类 out_video = cv2.VideoWriter() out_video.open('processed_video.mp4',fourcc,fps,(int(width), int(height)),True) while(True): # 读取视频中的每一帧 ret, frame = capture.read() # 如果该帧存在则进行操作 if ret is True: # 对输入的每一帧图像处理 result = process_fun(frame) # 保存已经处理后的每一帧图像 out_video.write(result) #cv2.imwrite("precessed.jpg",result) # 如果该帧不存在则循环结束 else: break out_video.release()
注意:上面读取和保存视频的格式是mp4的,如果是avi格式化的视频需要修改VideoWriter_fourcc参数
到此这篇关于利用python OpenCV去除视频水印的文章就介绍到这了,更多相关python OpenCV给视频去除水印内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
详解Python中高阶函数(map,filter,reduce,sorted)的使用
高阶函数就是能够把函数当成参数传递的函数就是高阶函数,换句话说如果一个函数的参数是函数,那么这个函数就是一个高阶函数。本文为大家详细讲解了Python中常用的四个高阶函数,感兴趣的可以了解一下2022-04-04
最新评论