如何在 Python 中使用 OpenCV 在图像上添加水印

简介

水印是企业和在线内容信用标记的重要组成部分。它可以以标志、签名或印章的形式出现,对创作者来说是独一无二的。在向数字世界中的对象创建者提供所有权或信用时,它是一个非常重要的工具。

大多数专业人士使用水印来防止他们的内容在未经他们同意的情况下被盗或复制。现在使用 OpenCV 制作这些水印比以往任何时候都容易。

使用 OpenCV 创建水印的一些优点如下:

  • 易于使用:初学者和专家都可以使用 OpenCV 来保护他们的知识产权或数字创作。通过几行免费可用的代码,你可以确保没有人可以访问你的照片、视频或其他数字可用内容。

  • 用途广泛:OpenCV 用于通过 Python 代码使用像素操作为照片广告视频创建水印。你还可以将水印嵌入到你的内容深处,这样它就不会破坏你的内容的可见性。这样,你的作品就可以使用自己的私人水印轻松识别。

什么是 OpenCV?

它是一种开源的机器学习库,用于计算机视觉处理功能,因此被称为 OpenCV。它旨在为所有计算机视觉软件提供基本的理解和通用基础设施,以加速商业用途的增长。它有一个 BSD 许可证,因此这使得 OpenCV 很容易被各种企业修改和使用代码。

它包含超过 2500 种不同的算法,从普通到最新的机器学习算法,它们都可以在个人日常项目中使用。

算法可用于识别和检测人脸、对人类行为进行分类、识别各种视频源中的对象。它还可用于跟踪相机运动、提取任何对象的 3D 模型、跟踪移动对象、从立体相机制作 3D 云点。它还可以组合单个图像以生成整个场景的更高分辨率图像,消除红眼,理解背景风景,并使用增强库。

OpenCV 在他们的社区中拥有超过 4.7 万人,下载量超过 1800 万次。随着越来越多的人使用机器学习来解决他们的问题,OpenCV 的使用也在增加,人们正在创建多个项目,例如手势感应机器人或仅通过手势使用手机等等。你可以访问:https://opencv.org/

使用 OpenCV

ba763964f3c33aaa56e6e1e346491a38.png

OpenCV 是一个方便的 Python 库,它允许我们执行许多关键操作。该库的功能之一包括创建水印。我们将在本文中尽可能多地介绍,但我们主要做以下事情:

  • 使用文本创建水印

  • 使用图像创建水印

  • 定义透明函数

  • 导入 PIL 函数

  • 调整文本位置以适合你的内容

  • 定义添加图像的函数

按照下面的代码开始在你创建的内容上添加水印。

使用下面给出的图像创建水印:

f5fad493e4ea8562b745b96bec351ab5.png

水印:

fe534b6c4c035796f4ef2b7a769fc2d1.png

步骤1:导入和加载所需的库。
import cv2
img = cv2.imread('diego-jimenez-A-NVHPka9Rk-unsplash.JPG')
watermark = cv2.imread("Watermark.JPG")
步骤 2:缩放图像

你可以缩放图像,从而缩小特定分辨率的图像或在需要时将图像保持为其原始分辨率。

percent_of_scaling = 20
new_width = int(img.shape[1] * percent_of_scaling/100)
new_height = int(img.shape[0] * percent_of_scaling/100)
new_dim = (new_width, new_height)
resized_img = cv2.resize(img, new_dim, interpolation=cv2.INTER_AREA)

wm_scale = 40
wm_width = int(watermark.shape[1] * wm_scale/100)
wm_height = int(watermark.shape[0] * wm_scale/100)
wm_dim = (wm_width, wm_height)
步骤3:编写代码以创建水印

下面显示的代码片段可用于使用 OpenCV 创建水印

resized_wm = cv2.resize(watermark, wm_dim, interpolation=cv2.INTER_AREA)
步骤 4:显示输出的驱动程序代码函数

要显示图像,我们可以使用以下代码片段,该代码段将在特定输出窗口(通常是输出屏幕或监视器)中显示图像。

h_img, w_img, _ = resized_img.shape
center_y = int(h_img/2)
center_x = int(w_img/2)
h_wm, w_wm, _ = resized_wm.shape
top_y = center_y - int(h_wm/2)
left_x = center_x - int(w_wm/2)
bottom_y = top_y + h_wm
right_x = left_x + w_wm

roi = resized_img[top_y:bottom_y, left_x:right_x]
result = cv2.addWeighted(roi, 1, resized_wm, 0.3, 0)
resized_img[top_y:bottom_y, left_x:right_x] = result

filename = 'Watermakred_Image.jpg'
cv2.imwrite(filename, resized_img)
cv2.imshow("Resized Input Image", resized_img)
cv2.waitKey(0)
cv2.destroyAllWindows()

编译完整代码

要将文本用作图像上的水印,我们可以使用下面标记的代码。现在我们可以将我们的图像作为输入并使用所需的水印并将其添加到任何图像中。

在这种情况下,我从网站上选择了一张免费图片,并将我的名字作为水印添加到其中。

代码:

import cv2

img = cv2.imread('diego-jimenez-A-NVHPka9Rk-unsplash.JPG')

watermark = cv2.imread("Watermark.JPG")




percent_of_scaling = 20

new_width = int(img.shape[1] * percent_of_scaling/100)

new_height = int(img.shape[0] * percent_of_scaling/100)

new_dim = (new_width, new_height)

resized_img = cv2.resize(img, new_dim, interpolation=cv2.INTER_AREA)




wm_scale = 40

wm_width = int(watermark.shape[1] * wm_scale/100)

wm_height = int(watermark.shape[0] * wm_scale/100)

wm_dim = (wm_width, wm_height)




resized_wm = cv2.resize(watermark, wm_dim, interpolation=cv2.INTER_AREA)




h_img, w_img, _ = resized_img.shape

center_y = int(h_img/2)

center_x = int(w_img/2)

h_wm, w_wm, _ = resized_wm.shape

top_y = center_y - int(h_wm/2)

left_x = center_x - int(w_wm/2)

bottom_y = top_y + h_wm

right_x = left_x + w_wm




roi = resized_img[top_y:bottom_y, left_x:right_x]

result = cv2.addWeighted(roi, 1, resized_wm, 0.3, 0)

resized_img[top_y:bottom_y, left_x:right_x] = result




filename = 'Watermakred_Image.jpg'

cv2.imwrite(filename, resized_img)

cv2.imshow("Resized Input Image", resized_img)

cv2.waitKey(0)

cv2.destroyAllWindows()

输出

500924b67a7b673b47dce81870d76bdd.png

尾注

通过使用上面的代码,你可以为图像添加任何水印,也可以使用 OpenCV 和 Python 将自定义图像添加到图像中。希望此代码对你有任何帮助。

☆ END ☆

如果看到这里,说明你喜欢这篇文章,请转发、点赞。微信搜索「uncle_pn」,欢迎添加小编微信「 woshicver」,每日朋友圈更新一篇高质量博文。

扫描二维码添加小编↓

241f85cd9c9ce63cd92a3d144cea6bf5.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值