opencv 给图片和视频添加水印

给图片和视频添加水印

  • [1 给图片添加水印](#1 给图片添加水印)
  • [2 给视频添加水印](#2 给视频添加水印)

1 给图片添加水印

代码如下:

python 复制代码
 '''添加水印''' 
    img=cv2.imread(r'../15day4.10/src/xiaoren.png')  
    img2=cv2.imread(r'../15day4.10/src/bg.png')  
    h,w,c=img.shape
    RIO_img2=img2[100:100+h,200:200+w]
    img3=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
    _,black=cv2.threshold(cv2.cvtColor(img,cv2.COLOR_BGR2GRAY),30,255,cv2.THRESH_BINARY)
    _,white=cv2.threshold(cv2.cvtColor(img,cv2.COLOR_BGR2GRAY),30,255,cv2.THRESH_BINARY_INV)
    img_bit=cv2.bitwise_and(img,img,mask=white)
    RIO2_img2=cv2.bitwise_and(RIO_img2,RIO_img2,mask=black)
    RIO_img2[::]=cv2.add(RIO2_img2,img_bit)
    cv2.imshow('img',img)
    cv2.imshow("img2",img2)
    # cv2.imshow('RIO_img2',RIO_img2)
    # cv2.imshow('RIO2_img2',RIO2_img2)
    cv2.imshow('img_bit',img_bit)
    cv2.imshow('white',white)
    
    # cv2.imshow('img3',img3)
    cv2.waitKey(0)


步骤:

  • 1.读取logo图和背景图
  • 2.将logo图的 h,w,c=img.shape求出
  • 3.根据logo图高宽,在背景图里用RIO切割出和logo图形状一样的切片出来
  • 4.在对logo图进行掩膜运算得到白色logo
  • 5.对掩膜运算的logo进行反阈值处理得到黑色的logo
  • 6.再将黑色logo对背景图的切片进行按位与运算,使得黑色logo出现在背景图的切片中(只会有黑色logo区域变为黑色,其余不变)
  • 7 将白色logo与logo的原图进行按位与运算得到,原图的logo的部分
  • 8有黑色logo的切片与原图的logo进行相加,再赋值给原背景图的切片部分,最后语言背景图就有了logo了(切片与原图内存共享)

2 给视频添加水印

代码如下:

python 复制代码
def test11(img2,img):
    '''添加水印''' 
    # img=cv2.imread(r'../15day4.10/src/xiaoren.png')  
    # img2=cv2.imread(r'../15day4.10/src/bg.png')  
    h,w,c=img.shape
    RIO_img2=img2[100:100+h,200:200+w]
    img3=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
    _,black=cv2.threshold(cv2.cvtColor(img,cv2.COLOR_BGR2GRAY),30,255,cv2.THRESH_BINARY)
    _,white=cv2.threshold(cv2.cvtColor(img,cv2.COLOR_BGR2GRAY),30,255,cv2.THRESH_BINARY_INV)
    img_bit=cv2.bitwise_and(img,img,mask=white)
    RIO2_img2=cv2.bitwise_and(RIO_img2,RIO_img2,mask=black)
    RIO_img2[::]=cv2.add(RIO2_img2,img_bit)
    # cv2.imshow('img',img)
    # cv2.imshow("img2",img2)
    # # cv2.imshow('RIO_img2',RIO_img2)
    # # cv2.imshow('RIO2_img2',RIO2_img2)
    # cv2.imshow('img_bit',img_bit)
    # cv2.imshow('white',white)
    
    # cv2.imshow('img3',img3)
    # cv2.waitKey(0)
    return img2
def test12():
    '''给视频添加logo'''
    path=r'../15day4.10/src/谁.mp4'
    img2=cv2.imread(r"../15day4.10/src/xiaoren.png")
    cap=cv2.VideoCapture(path) #获取视频
    while True:
        # 获取每一帧的图片
        ret,img=cap.read()
        # ret表示是否获取到视频中的图片
        if ret:
            img=test11(img,img2)
            cv2.imshow("img",img)
            if cv2.waitKey(17)&0xff==ord('q'):
                break
        else:
            break
            
    
相关推荐
消晨消晨1 小时前
Pytorch初上手——模型构建
人工智能·深度学习
陈天伟教授1 小时前
图解人工智能(18)基于知识的人工智能
人工智能
jixunwulian1 小时前
AI边缘智能网关工业安全领域的边缘智能预警方案应用
网络·人工智能·安全
kcuwu.1 小时前
深度学习模型优化完全指南:从“下山“到“刷题“的通俗讲解
人工智能·深度学习
GitCode官方1 小时前
智能进化觉醒!openvela trunk-5.5 发布:端侧 AI Agent 开源和多方位升级
人工智能·开源
小江的记录本1 小时前
【AI大模型选型指南】《2026年5月(最新版)国内外主流AI大模型选型指南》(企业版)
前端·人工智能·后端·ai作画·aigc·ai编程·ai写作
北京华盛恒辉软件开发公司11 小时前
大模型运维深远海漂浮式风电系统已融合人工智能AI软件平台
运维·人工智能
HIT_Weston1 小时前
82、【Agent】【OpenCode】bash 工具提示词(amend 风险)
人工智能·agent·opencode
阿福聊编程2 小时前
Data-Analysis-Agent:用自然语言查数据库的开源 AI 数据分析工具
数据库·人工智能
Promise微笑2 小时前
Geo专家于磊:Json-LD优化实战SOP与双核四驱体系
大数据·人工智能·重构·json