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
            
    
相关推荐
秋月的私语几秒前
遥感影像拼接线优化工具:基于Qt+GDAL+OpenCV的从一到二实践
开发语言·qt·opencv
敲上瘾1 分钟前
大模型接入从入门到实战:API/SDK/本地部署/Claude Code 路由全解析
人工智能·深度学习·机器学习·json·aigc·claude
秦jh_2 分钟前
【LangChain】LangChain 与 LangGraph 介绍
人工智能·langchain
captain_AIouo6 分钟前
Captain AI:破解OZON困局,赋能竞争优势
大数据·人工智能·经验分享·aigc
黎阳之光7 分钟前
【从虚拟到实体:黎阳之光实时三维重构,开启AI空间智能新纪元
大数据·人工智能·算法·安全·数字孪生
亦暖筑序7 分钟前
Spring AI VectorStore与RAG Pipeline源码深度解析:从PDF到检索增强生成的完整实现
人工智能·spring
小小AK11 分钟前
金蝶云星空与旺店通·企业奇门系统对接方案
人工智能
VBsemi-专注于MOSFET研发定制11 分钟前
面向AI低空应急指挥平台的无人机动力与负载管理MOSFET选型策略与器件适配手册
人工智能·无人机
卤煮最下饭13 分钟前
AI Glasses配合灵珠智能体实现“星幕识影”
人工智能