📅  最后修改于: 2023-12-03 15:22:15.167000             🧑  作者: Mango
在许多情况下,我们需要将自己的数字图像添加水印以保护它们。使用 OpenCV 和 Python,我们可以轻松地添加文本、数字或其他图像作为水印。这篇文章将介绍如何使用 OpenCV 和 Python 在图像中添加文本水印。
我们首先需要安装必要的库。在命令行里输入以下命令即可安装 OpenCV 和 matplotlib 库。
!pip install opencv-python matplotlib
接下来,让我们开始编写代码!
首先,我们需要读取我们想要添加水印的图像。这里我们读取的图像文件名为 image.png
。
import cv2
import matplotlib.pyplot as plt
image = cv2.imread('image.png')
plt.imshow(image)
plt.show()
我们使用 matplotlib 库将图像显示出来。运行上面的代码,应该会显示出原始图像。
我们现在可以开始添加水印。我们将添加一个简单的文本水印。
import numpy as np
# 要添加的文本和字体大小
text = "watermark"
font_size = 2
# 设置文本字体
font = cv2.FONT_HERSHEY_SIMPLEX
# 获取文本大小
text_size = cv2.getTextSize(text, font, font_size, 2)[0]
# 设置文本位置
text_x = int((image.shape[1] - text_size[0]) / 2)
text_y = int((image.shape[0] + text_size[1]) / 2)
# 创建带有透明背景的文本图像
text_image = np.zeros((image.shape[0], image.shape[1], 4), dtype='uint8')
# 添加文本到文本图像
cv2.putText(text_image, text, (text_x, text_y), font, font_size, [255, 255, 255, 255], 2, cv2.LINE_AA)
# 将文本图像与原始图像叠加
combined = cv2.addWeighted(image, 1, text_image, 0.3, 0)
上述代码中,我们创建一个 text_image
,然后将文本添加到该图像中。最后,我们通过 addWeighted()
函数将文本图像与原始图像叠加。运行上面的代码,应该会显示一个带有文本水印的图像。
最后,我们需要将带有水印的图像保存到磁盘。我们可以使用 OpenCV 的 imwrite()
函数来保存图像。
cv2.imwrite('watermarked_image.png', combined)
这里我们将图像保存为 watermarked_image.png
文件。
以下是完整的添加文本水印的代码。
import cv2
import numpy as np
import matplotlib.pyplot as plt
# 读取图像
image = cv2.imread('image.png')
# 要添加的文本和字体大小
text = "watermark"
font_size = 2
# 设置文本字体
font = cv2.FONT_HERSHEY_SIMPLEX
# 获取文本大小
text_size = cv2.getTextSize(text, font, font_size, 2)[0]
# 设置文本位置
text_x = int((image.shape[1] - text_size[0]) / 2)
text_y = int((image.shape[0] + text_size[1]) / 2)
# 创建带有透明背景的文本图像
text_image = np.zeros((image.shape[0], image.shape[1], 4), dtype='uint8')
# 添加文本到文本图像
cv2.putText(text_image, text, (text_x, text_y), font, font_size, [255, 255, 255, 255], 2, cv2.LINE_AA)
# 将文本图像与原始图像叠加
combined = cv2.addWeighted(image, 1, text_image, 0.3, 0)
# 显示结果图像
plt.imshow(combined)
plt.show()
# 保存结果图像
cv2.imwrite('watermarked_image.png', combined)
在本文中,我们介绍了如何使用 OpenCV 和 Python 在图像中添加文本水印。我们使用 OpenCV 的 putText()
函数向图像中添加文本,并使用 addWeighted()
函数将文本图像叠加到原始图像上。这是一种保护数字图像的简单方法,提高了其版权保护能力。