使用opencv给视频添加水印

import cv2
capture=cv2.VideoCapture(0)   #读取本机摄像头
while True:
    ret,frame=capture.read()   #ret状态  frame:这一针的图像
    logal_image=cv2.imread('tsww.jpg')
    w1, h1, c1 = frame.shape
    w2,h2,c2=logal_image.shape
    print(w1,h1)
    print(w2, h2)
    roi=frame[w1-w2:w1,h1-h2:h1]
    #灰度化
    gray_logol=cv2.cvtColor(logal_image,cv2.COLOR_BGR2GRAY)
    #黑化
    _,black_logol=cv2.threshold(gray_logol,170,255,cv2.THRESH_BINARY)
    imag_tsw=cv2.bitwise_and(roi,roi,mask=black_logol)
    #白化
    _,white_logal=cv2.threshold(gray_logol,170,255,cv2.THRESH_BINARY_INV)
    imag_tsw1=cv2.bitwise_and(logal_image,logal_image,mask=white_logal)
    imag_tsw2=cv2.add(roi,imag_tsw)
    roii=cv2.add(imag_tsw,imag_tsw1)
    roi[:]=roii
    cv2.imshow('roi',frame)

    if cv2.waitKey(30) & 0xFF == 27:  # waitKey延迟作用,130有点卡,一般30或者60
        break
capture.release()
cv2.destroyAllWindows()

可以将      capture=cv2.VideoCapture(0) 中的0换为视频的地址给自己的视频添加水印

照片来源于网络,侵权请联系删除

  • 4
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
要在OpenCV视频添加水印,你需要先视频,然后在每帧上添加水印,最后保存输出视频。下面是一个示例代码: ```python import cv2 # 视频 video = cv2.VideoCapture('input.mp4') # 获取视频参数 fps = int(video.get(cv2.CAP_PROP_FPS)) width = int(video.get(cv2.CAP_PROP_FRAME_WIDTH)) height = int(video.get(cv2.CAP_PROP_FRAME_HEIGHT)) # 创建输出视频对象 fourcc = cv2.VideoWriter_fourcc(*'mp4v') out = cv2.VideoWriter('output.mp4', fourcc, fps, (width, height)) # 水印 watermark = cv2.imread('watermark.png', cv2.IMREAD_UNCHANGED) while True: # 读取一帧 ret, frame = video.read() if ret: # 在帧上添加水印 overlay = cv2.resize(watermark, (frame.shape[1] // 5, frame.shape[0] // 5)) x, y = frame.shape[1] - overlay.shape[1], frame.shape[0] - overlay.shape[0] alpha_mask = overlay[:, :, 3] / 255.0 alpha = cv2.merge((alpha_mask, alpha_mask, alpha_mask)) blended = cv2.convertScaleAbs(frame[y:y+overlay.shape[0], x:x+overlay.shape[1]] * (1 - alpha) + overlay[:, :, 0:3] * alpha) frame[y:y+overlay.shape[0], x:x+overlay.shape[1]] = blended # 写入输出视频 out.write(frame) # 显示帧 cv2.imshow('frame', frame) # 按下 q 键退出 if cv2.waitKey(1) & 0xFF == ord('q'): break else: break # 释放资源 video.release() out.release() cv2.destroyAllWindows() ``` 注意,上面的代码假设你的水印是一个带 alpha 通道的 PNG 图像。如果你的水印不带 alpha 通道,你需要使用 `cv2.addWeighted()` 方法将它与帧混合。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不良使

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值