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
            
    
相关推荐
waterfeeling2 小时前
用 Context7 做一次点云配准的调研—测试—报告闭环:鲁棒 ICP
人工智能
Data-Miner5 小时前
面对 AI 大模型智能涌现,如何从技术层面保护好隐私与数据安全?
大数据·人工智能
hpoenixf5 小时前
当 AI 开始谈“买什么”,研究助手离投顾和交易还有多远?
人工智能
大模型真好玩6 小时前
如何让视频模型对你言听计从?结构化提示词助你生成电影级画面
人工智能·agent·deepseek
zhang133830890756 小时前
传统机械三杯式风速传感器易磨损冻堵?CG-88金属超声波风速风向传感器给出免运维方案
运维·服务器·网络·人工智能·自动化
特立独行的猫a6 小时前
会说确认叫车才下单-启元机器人官方滴滴打车技能源码详解
人工智能·机器人·技能·启元机器人
老金带你玩AI6 小时前
GPT-6.1 Terra上线:更便宜了,干活到底怎么样?
人工智能
会议咨询6 小时前
2027年电力电子、人工智能与大数据国际会议(PEABD 2027)
大数据·人工智能·电力电子
Jsundoku7 小时前
第五章 深度学习 -- 卷积神经网络
人工智能·深度学习·cnn
水如烟7 小时前
孤能子视角:SEP《人工智能的认识论》EIS读法·理解——理解幻觉与解压缩幻觉:同一缺口,两份报告
人工智能