使用open-cv实现图片添加水印

实验原理

  • 将一个透明的水印图层覆盖到原始图像上

实验过程

python 复制代码
import cv2

def add_logo_to_image(img, logo_path, position, mask_threshold=0):
    """
    在图像上添加logo。

    参数:
    img: 输入的图像,为一个二维或三维的numpy数组。
    logo_path: logo图片的路径,字符串类型。
    position: logo在图像上的位置,为一个元组,包含两个整数,分别表示x和y坐标。
    mask_threshold: 用于创建logo二值掩码的阈值,可选,默认为0。

    返回:
    添加logo后的图像。
    """
    # 读取logo图片
    logo = cv2.imread(logo_path)
    # 将logo转换为灰度图
    logo_gray = cv2.cvtColor(logo, cv2.COLOR_BGR2GRAY)
    # 根据灰度图和阈值创建logo的二值掩码
    _, logo_binary = cv2.threshold(logo_gray, mask_threshold, 255, cv2.THRESH_BINARY_INV)

    # 解包位置坐标
    x, y = position
    # 根据logo尺寸定义图像上的区域
    ROI = img[y:y + logo.shape[0], x:x + logo.shape[1]]
    # 使用掩码对ROI区域和logo进行位运算,以融合logo
    ROI_logo = cv2.bitwise_and(ROI, ROI, mask=logo_binary)
    img_logo = cv2.add(ROI_logo, logo)

    # 将融合后的logo放置到原图像的相应位置
    img[y:y + logo.shape[0], x:x + logo.shape[1]] = img_logo
    # 返回添加logo后的图像
    return img


# 读取背景图像
img = cv2.imread('./bgc.jpeg')

# 在图像的左上角添加第一个logo
img = add_logo_to_image(img, './tm1.png', (0, 0))
# 在图像的右上角添加第二个logo
img = add_logo_to_image(img, './tm2.png', (400, 0))

# 显示最终的图像
cv2.imshow('img', img)
# 等待按键按下,然后关闭窗口
cv2.waitKey(0)

实验结果

相关推荐
长沙红胖子Qt1 小时前
案例分享:音视频录像综合应用(支持录制麦克风音频、录制摄像头视频、同步录制音视频,支持opencv对图形进行处理,录制mp4文件)
opencv·音视频·录音·音视频同步·录像·录像图像处理
星辰pid1 小时前
基于ROS与YOLOv3的智能采购机器人设计(智能车创意组-讯飞智慧生活组)
人工智能·opencv·yolo·机器人
极客BIM工作室2 小时前
U-Net 的输入与输出:通用场景与扩散模型场景解析
人工智能·深度学习·计算机视觉
格林威3 小时前
AOI在化学药剂检测领域中的应用
人工智能·数码相机·计算机视觉·目标跟踪·视觉检测·制造·机器视觉
Theodore_10223 小时前
深度学习(10)模型评估、训练与选择
人工智能·深度学习·算法·机器学习·计算机视觉
CV炼丹术3 小时前
NeurIPS 2025 | 港中文提出COS3D:多模态融合语言与分割,创造开放词汇3D分割新范式!
人工智能·计算机视觉·neurips 2025
AI technophile4 小时前
OpenCV计算机视觉实战(28)——深度学习初体验
深度学习·opencv·计算机视觉
hixiong1234 小时前
C# OpencvSharp使用lpd_yunet进行车牌检测
开发语言·opencv·计算机视觉·c#
Coovally AI模型快速验证4 小时前
超越传统3D生成:OccScene实现感知与生成的跨任务共赢
人工智能·深度学习·机器学习·计算机视觉·3d·目标跟踪
CV实验室6 小时前
CV论文速递: 覆盖医学影像分析、视频理解与生成、3D场景理解与定位等方向! (10.27-10.31)
人工智能·计算机视觉·3d·音视频