python OpenCV给视频去除水印
修炼之路 人气:2上面的图片展示的是视频中的某一帧,需要将图片中的,实体拓展和退出全屏以及右上角的两个圆圈按钮给删除掉。
解决思路
一个很简单的想法就是,从图片上其它两块背景相同的地方,拷贝两个块替换掉按钮位置的块
用下面的代码先从视频中导出一帧图片,然后统计需要删除按钮的坐标位置
实现代码如下:
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参数
加载全部内容