Opencv之图像添加水印

打印 上一主题 下一主题

主题 831|帖子 831|积分 2493

一、实行原理

在图片处置处罚范畴,添加水印是一种常见的操作。通过叠加图像的方式,可以将水印无缝嵌入目标图像的指定位置。其基本原理包罗以下步调:
1、模板输入(掩膜生成):


将水印图片转换为灰度图,通过二值化操作生成掩膜。
掩膜用于区分水印图的有效地区(黑色)和背景地区(白色)。
2、背景提取:

      
      
模板图的外形       利用掩膜和目标图片的感兴趣地区(ROI),通过位运算提取水印图背景部分。
3、水印叠加:

将背景部分和水印有效地区举行融合,生成叠加后的图片。该组件的目的就是将图像对应的数组中的对应元素举行相加(一定要注意这里的两个数组是规格雷同的,也就是说要么都是灰度图,要么都是彩图),其过程如下图所示。

4、图像更新:

将叠加后的地区重新写回到目标图片中,完成水印的嵌入。

二、实行代码

以下代码实现了完整的水印添加流程:
  1. import cv2
  2. # 1. 读取原图
  3. image_np = cv2.imread("demo1.jpg")
  4. image_np = cv2.resize(image_np, (image_np.shape[1] // 10, image_np.shape[0] // 10))
  5. # 2. 读取水印图
  6. logo = cv2.imread("./logo.jpg")
  7. logo = cv2.resize(logo, (logo.shape[1] // 3, logo.shape[0] // 3))
  8. gray_logo = cv2.cvtColor(logo, cv2.COLOR_BGR2GRAY)  # 转为灰度图
  9. # 3. 创建掩膜,保留灰色部分,去掉白色部分
  10. # 定义阈值范围(灰色部分为中间亮度值)
  11. lower_bound = 1  # 灰色部分的最低亮度值
  12. upper_bound = 254  # 灰色部分的最高亮度值
  13. mask_logo = cv2.inRange(gray_logo, lower_bound, upper_bound)  # 保留灰色部分
  14. cv2.imshow("Mask of Logo", mask_logo)
  15. # 确保掩膜大小与 ROI 区域一致
  16. rows, cols = logo.shape[:2]  # 获取 logo 的高度和宽度
  17. roi = image_np[:rows, :cols]  # 从原图中截取 ROI 区域
  18. # 4. 提取 ROI 背景(除去白色区域的部分)
  19. logo_no_white = cv2.bitwise_and(logo, logo, mask=mask_logo)  # 使用掩膜保留灰色部分
  20. cv2.imshow("Logo without White", logo_no_white)
  21. # 5. 将去除白色的 logo 融合到原图 ROI
  22. image_np_bg = cv2.bitwise_and(roi, roi, mask=cv2.bitwise_not(mask_logo))  # 提取原图背景区域
  23. dst = cv2.add(image_np_bg, logo_no_white)  # 将背景与 logo 融合
  24. # 6. 更新原图的 ROI 区域
  25. image_np[:rows, :cols] = dst
  26. cv2.imshow("Final Image with Watermark", image_np)
  27. # 7. 显示结果
  28. cv2.waitKey(0)
  29. cv2.destroyAllWindows()
复制代码
 
三、实行征象

1、原始图像:

显示未添加水印的原始图片。
2、掩膜生成:



  • 掩膜图显示了水印图的有效地区(黑色)和背景地区(白色)。
  • 掩膜用于提取目标图片的背景。
3、背景提取:

image_np_bg 显示了原始图像中,水印位置地区撤除水印部分的背景。
4、水印叠加:

水印图像与背景部分融合,生成了最终叠加效果。
5、最闭幕果:

在原图的指定位置成功嵌入了水印,水印图像自然融合,与目标图片无缝对接。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

灌篮少年

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表