以下是一个基于Python和OpenCV的视频去水印示例代码,适用于固定位置的水印去除(需要提前确定水印的坐标位置):
```python
import cv2
import numpy as np
def remove_watermark(input_path, output_path, watermark_x, watermark_y, watermark_width, watermark_height):
读取视频
cap = cv2.VideoCapture(input_path)
if not cap.isOpened():
print("无法打开视频文件")
return
获取视频参数width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))
height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))
frame_count = int(cap.get(cv2.CAP_PROP_FRAME_COUNT))
fps = int(cap.get(cv2.CAP_PROP_FPS))
创建视频写入对象
fourcc = cv2.VideoWriter_fourcc('mp4v')
out = cv2.VideoWriter(output_path, fourcc, fps, (width, height))
获取水印区域坐标(需要预先确定)
示例参数:水印在视频右下角,宽高100x30
watermark_x = width 100 水印左上角x坐标
watermark_y = height 30 水印左上角y坐标
watermark_width = 100
watermark_height = 30
success = True
while success:
ret, frame = cap.read()
if not ret:
break
裁剪水印区域
if watermark_x + watermark_width <= width and watermark_y + watermark_height <= height:
frame = cv2.copyMakeBorder(
frame,
0, 0,
watermark_width, watermark_height,
cv2.BORDER_REPLICATE,
value=[0, 0, 0]
)
frame[watermark_y:watermark_y+watermark_height, watermark_x:watermark_x+watermark_width] = 0
写入新视频
out.write(frame)
cap.release()
out.release()
print(f"视频处理完成,输出文件:{output_path