千家信息网

怎么利用Python和OpenCV对图像进行加水印

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,本篇内容主要讲解"怎么利用Python和OpenCV对图像进行加水印",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"怎么利用Python和OpenCV对图像
千家信息网最后更新 2026年11月01日怎么利用Python和OpenCV对图像进行加水印

本篇内容主要讲解"怎么利用Python和OpenCV对图像进行加水印",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"怎么利用Python和OpenCV对图像进行加水印"吧!

前言

在本文中,我将带着大家使用 Python 和 OpenCV 对图像进行加水印。水印有意在图像上留下文本/标志,很多博主会使用水印来保护图像的版权。使用水印我们可以确保图像的所有者是在图像上印制水印的人。

水印前的图片:

logo.png:

? 第 1 步:导入 OpenCV 并读取logo和要应用水印的图像

# 使用 OpenCV 导入 cv2 的水印图像import cv2# 导入我们将要使用的logologo = cv2.imread("logo.png")# 导入我们要应用水印的图像img = cv2.imread("haiyong.png")

? 第 2步:计算两个图像的高度和宽度

计算两个图像的高度和宽度,并将它们保存到其他变量中。我们需要计算宽度和高度,因为我们要将水印放置在图像上的某个位置,为此,我们只需要知道徽标和图像的正确宽度和高度。

# 计算logo的尺寸高度和宽度h_logo, w_logo, _ = logo.shape# 图像的高度和宽度h_img, w_img, _ = img.shape

在这里,我们使用了OpenCV 中的shape函数,它返回图像的高度和宽度的元组。

? 第 3 步:将水印放置在图像的中心

现在,我们将计算图像中心的坐标,因为我要将水印放置在图像的中心,你们也可以选择其他位置。

# 计算中心计算中心的坐标,我们将在其中放置水印center_y = int(h_img/2)center_x = int(w_img/2)# 从上、下、右、左计算top_y = center_y - int(h_logo/2)bottom_y = top_y + h_logoright_x = left_x + w_logoleft_x = center_x - int(w_logo/2)

? 第 4 步:使用 OpenCV 中的 addWeighted 函数

要为图像添加水印,我们将使用 OpenCV 中的 addWeighted 函数。首先,我们将提供要放置水印的目的地,然后将该目的地传递给带有图像和徽标的 addWeighted 函数。

语法: cv2.addWeighted(source1, alpha, source2, beta, gamma)

在我们的例子中,source1 是我们想要放置logo的图像,alpha 是logo的不透明度,source2 是logo本身,我们将相应地设置 beta为1,不透明度的 alpha 和 gamma分别为 1 和 0。

# 给图片添加水印destination = img[top_y:bottom_y, left_x:right_x]result = cv2.addWeighted(destination, 1, logo, 1, 0)

? 第 5 步:显示结果并保存输出

之后,我们只是显示结果并保存输出。为了显示我们使用imshow 函数的输出并写入/保存图像,我们在两个函数中都使用imwrite 函数,首先我们必须提供文件名作为参数,然后是文件本身。cv2.waitKey(0) 用于等待直到用户按下 Esc 键,之后 cv2.destroyAllWindows 函数将关闭窗口。

# displaying and saving imageimg[top_y:bottom_y, left_x:right_x] = resultcv2.imwrite("watermarked.jpg", img)cv2.imshow("Watermarked Image", img)cv2.waitKey(0)cv2.destroyAllWindows()

? 下面是完整的实现:

# 使用 OpenCV 导入 cv2 的水印图像import cv2# 导入我们将要使用的logologo = cv2.imread("logo.png")# 导入我们要应用水印的图像img = cv2.imread("haiyong.png")# 计算logo的尺寸高度和宽度h_logo, w_logo, _ = logo.shape# 图像的高度和宽度h_img, w_img, _ = img.shape# 计算中心计算中心的坐标,我们将在其中放置水印center_y = int(h_img/2)center_x = int(w_img/2)# 从上、下、右、左计算top_y = center_y - int(h_logo/2)left_x = center_x - int(w_logo/2)bottom_y = top_y + h_logoright_x = left_x + w_logo# 给图片添加水印destination = img[top_y:bottom_y, left_x:right_x]result = cv2.addWeighted(destination, 1, logo, 1, 0)# 显示和保存图像img[top_y:bottom_y, left_x:right_x] = resultcv2.imwrite("watermarked.jpg", img)cv2.imshow("Watermarked Image", img)cv2.waitKey(0)cv2.destroyAllWindows()

输出:

到此,相信大家对"怎么利用Python和OpenCV对图像进行加水印"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

图像 水印 宽度 高度 函数 计算中心 输出 两个 图片 坐标 应用 位置 内容 尺寸 徽标 文件 目的 目的地 结果 透明度 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 美国互联网保险保险科技 互联网科技会 互联网医疗科技 融势互联网科技 互联网科技logo设计 丰台科技园 互联网公司 互联网科技股午盘股票涨跌 深圳互联网科技怎么样 互联网 科技馆 成都玖崟互联网科技有限公司乐商圈怎么样 湖南诚度互联网科技有限公司 新兴科技互联网创新大赛颁奖典礼 智帮互联网科技公司最近动向 互联网相关科技技术 2021世界互联网领先科技成果发布 互联网科技职业技能培训学校 求路客互联网科技电话 第三届互联网大会安防黑科技 六子台科技互联网展会 前海云享互联网科技 郑州华宇互联网科技 互联网科技汛 美国互联网前沿科技 滨湖区互联网智能科技产品供应 济南华为互联网科技产业总部基地 科技大学互联网 上海科技产业互联网平台 富国互联网金融科技混合基金 易企秀互联网科技是做什么的 张家口科技产业互联网平台
0