12. 绘制图像索引
一、多行倾斜文字水印
- 水印是叠加在图像上的标志、签名、文本或图案,用于保护图像的版权。
先在黑色背景上添加图像或文字制作水印,再使用 cv.addWeight 函数,通过重叠混合把水印添加到原始图像上。
也可以以水印图案或文字区域作为掩模,使用 cv.add 函数修改掩模区域的像素值,实现把水印添加到原始图像上。
二、例程
import cv2
import numpy as np
from matplotlib import pyplot as plt
# A4.10 为图像添加水印
img = cv2.imread(r"E:/OpenCV/bgra.png", 1) # 加载原始图片
h, w = img.shape[0], img.shape[1]
# # 生成水印图案
# logo = cv2.imread("../images/logoXupt.png", 0) # 加载 Logo
# logoResize = cv2.resize(logo, (100,100)) # 调整图片尺寸
# grayMark = np.zeros(img.shape[:2], np.uint8) # 水印黑色背景
# grayMark[10:110,10:110] = logoResize # 生成水印图案
# 生成文字水印
mark = np.zeros(img.shape[:2], np.uint8) # 黑色背景
for i in range(h//100):
cv2.putText(mark, "youcans20", (20,90+100*i), cv2.FONT_HERSHEY_SIMPLEX, 1, 255, 2)
MAR = cv2.getRotationMatrix2D((w//2,h//2), 45, 1.0) # 旋转 45 度
grayMark = cv2.warpAffine(mark, MAR, (w,h)) # 旋转变换,默认为黑色填充
# 为图像添加水印 1
markC3 = cv2.merge([grayMark, grayMark, grayMark])
imgMark1 = cv2.addWeighted(img, 1, markC3, 0.25, 0) # 加权加法图像融合
# 为图像添加水印2
imgMark2 = cv2.add(img, 64, mask=grayMark) # 以水印图案作为掩模
plt.figure(figsize=(9, 6))
plt.subplot(221), plt.title("original"), plt.axis('off')
plt.imshow(cv2.cvtColor(img, cv2.COLOR_BGR2RGB))
plt.subplot(222), plt.title("watermark"), plt.axis('off')
plt.imshow(cv2.cvtColor(markC3, cv2.COLOR_BGR2RGB))
plt.subplot(223), plt.title("watermark embedded"), plt.axis('off')
plt.imshow(cv2.cvtColor(imgMark1, cv2.COLOR_BGR2RGB))
plt.subplot(224), plt.title("watermark embedded"), plt.axis('off')
plt.imshow(cv2.cvtColor(imgMark1, cv2.COLOR_BGR2RGB))
plt.tight_layout()
plt.show()
三、资料
youcans_的博客:
https://blog.csdn.net/youcans/article/details/125506829