📜  使用 OpenCV 和Python图像进行水印(1)

📅  最后修改于: 2023-12-03 15:22:15.167000             🧑  作者: Mango

使用 OpenCV 和 Python 图像进行水印

在许多情况下,我们需要将自己的数字图像添加水印以保护它们。使用 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() 函数将文本图像叠加到原始图像上。这是一种保护数字图像的简单方法,提高了其版权保护能力。