1
1
import cv2
2
2
import numpy as np
3
3
4
+
4
5
def add_watermark (input_video_path , output_video_path , watermark_path , position = (10 , 10 )):
5
6
video_capture = cv2 .VideoCapture (input_video_path )
6
7
watermark = cv2 .imread (watermark_path , cv2 .IMREAD_UNCHANGED )
7
8
watermark_height , watermark_width , _ = watermark .shape
8
9
frame_width = int (video_capture .get (3 ))
9
10
frame_height = int (video_capture .get (4 ))
10
11
fourcc = cv2 .VideoWriter_fourcc (* 'XVID' )
11
- output_video = cv2 .VideoWriter (output_video_path , fourcc , 30.0 , (frame_width , frame_height ))
12
+ output_video = cv2 .VideoWriter (
13
+ output_video_path , fourcc , 30.0 , (frame_width , frame_height ))
12
14
13
15
while True :
14
16
ret , frame = video_capture .read ()
15
17
16
18
if not ret :
17
19
break
18
20
19
- resized_watermark = cv2 .resize (watermark , (frame_width // 4 , frame_height // 4 ))
20
- roi = frame [position [1 ]:position [1 ] + resized_watermark .shape [0 ], position [0 ]:position [0 ] + resized_watermark .shape [1 ]]
21
+ resized_watermark = cv2 .resize (
22
+ watermark , (frame_width // 4 , frame_height // 4 ))
23
+ roi = frame [position [1 ]:position [1 ] + resized_watermark .shape [0 ],
24
+ position [0 ]:position [0 ] + resized_watermark .shape [1 ]]
21
25
22
26
if watermark .shape [2 ] == 4 :
23
27
mask = resized_watermark [:, :, 3 ]
24
28
mask_inv = cv2 .bitwise_not (mask )
25
29
img_bg = cv2 .bitwise_and (roi , roi , mask = mask_inv )
26
- img_fg = cv2 .bitwise_and (resized_watermark [:, :, :3 ], resized_watermark [:, :, :3 ], mask = mask )
30
+ img_fg = cv2 .bitwise_and (
31
+ resized_watermark [:, :, :3 ], resized_watermark [:, :, :3 ], mask = mask )
27
32
dst = cv2 .add (img_bg , img_fg )
28
- frame [position [1 ]:position [1 ] + resized_watermark .shape [0 ], position [0 ]:position [0 ] + resized_watermark .shape [1 ]] = dst
33
+ frame [position [1 ]:position [1 ] + resized_watermark .shape [0 ],
34
+ position [0 ]:position [0 ] + resized_watermark .shape [1 ]] = dst
29
35
30
36
else :
31
- frame [position [1 ]:position [1 ] + resized_watermark .shape [0 ], position [0 ]:position [0 ] + resized_watermark .shape [1 ]] = resized_watermark [:, :, :3 ]
37
+ frame [position [1 ]:position [1 ] + resized_watermark .shape [0 ], position [0 ] :position [0 ] + resized_watermark .shape [1 ]] = resized_watermark [:, :, :3 ]
32
38
33
39
output_video .write (frame )
34
40
@@ -38,4 +44,5 @@ def add_watermark(input_video_path, output_video_path, watermark_path, position=
38
44
print ("Watermark added successfully!" )
39
45
40
46
41
- add_watermark ('input_video.mp4' , 'output_video_with_watermark.mp4' , 'watermark.png' )
47
+ add_watermark ('input_video.mp4' ,
48
+ 'output_video_with_watermark.mp4' , 'watermark.png' )
0 commit comments