资讯专栏INFORMATION COLUMN

【评论区送书】使用 Python 和 OpenCV 对图像进行加水印

doodlewind / 3446人阅读

摘要:水印有意在图像上留下文本标志,很多博主会使用水印来保护图像的版权。使用水印我们可以确保图像的所有者是在图像上印制水印的人。全书分为篇,共章。理论和实践相结合。

? 作者主页:海拥
? 作者简介:?CSDN全栈领域优质创作者、?HDZ核心组成员、?蝉联C站周榜前十
? 粉丝福利:进粉丝群每周送四本书,每月送各种小礼品(搪瓷杯、抱枕、鼠标垫、马克杯等)

直接跳到末尾 去评论区领书

在本文中,我将带着大家使用 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()

输出:

? 评论区抽粉丝送书啦

? 欢迎大家在评论区提出意见和建议!(抽两位幸运儿送书,实物图如下)?

《人工智能数学基础》

简介:本书以零基础讲解为宗旨,面向学习数据科学与人工智能的读者,通俗地讲解每一个知识点,旨在帮助读者快速打下数学基础。
  全书分为 4 篇,共 17 章。其中第 1 篇为数学知识基础篇,主要讲述了高等数学基础、微积分、泰勒公式与拉格朗日乘子法;第 2 篇为数学知识核心篇,主要讲述了线性代数基础、特征值与矩阵分解、概率论基础、随机变量与概率估计;
  第 3 篇为数学知识提高篇,主要讲述了数据科学的几种分布、核函数变换、熵与激活函数;第 4 篇为数学知识应用篇,主要讲述了回归分析、假设检验、相关分析、方差分析、聚类分析、贝叶斯分析等内容。
  本书适合准备从事数据科学与人工智能相关行业的读者。

优点:

? 1.零基础也能快速入门。本书从最基础的高等数学基础讲起由浅入深,层层递进在巩固固有知识的同时深入讲解人工智能的算法原理。
? 2.全新视角介绍数学知识。采用计算机程序模拟数学推论的介绍方法,使数学知识更为清晰易懂,更容易让初学者深入理解数学定理、公式的意义,从而激发起读者的学习兴趣。
? 3.理论和实践相结合。每章最后提供根据所在章的理论知识点精心设计的“综合性实例”,读者可以通过综合案例进行实践操作,为以后的算法学习奠定基础。
? 4.大量范例源码+习题答案,为学习排忧解难。本书所有示例都有清晰完整的源码,每章之后设有习题并配套题目答案,讲解清晰,解决读者在学习中的所有困惑。

也有不想抽奖自己买的同学可以参考下面的链接

京东自营购买链接:

《人工智能数学基础 中国人工智能学会副理事长力荐教材》(唐宇迪,等) - 京东图书

当当自营购买链接:

《人工智能数学基础》(唐宇迪 等) - 当当图书

? 注意:

大家点赞关注,三天后也就是 10月1日 从评论区留言的同学中抽取两位送书

? 行业资料:精品PPT模板几千套,简历模板一千多套
? 面试题库:Java核心知识点大全和面试真题资料
? 学习资料:2300套PHP建站源码,微信小程序入门资料,Python全集(400集)

如果中奖了联系不上则视为放弃,可以从下方公众号里找到作者的联系方式,以后每周都会送四本书,后面送书力度还会加大,一年送几百上千本不是问题,回复【进群】领书不迷路,回复【资源】获取上面的资料??????

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/121516.html

相关文章

  • ❤️【python入门项目】在 Python 中创建条形图追赶动画(评论送书)❤️

    动画是使可视化更具吸引力和用户吸引力的好方法。它帮助我们以有意义的方式展示数据可视化。Python 帮助我们使用现有的强大 Python 库创建动画可视化。Matplotlib是一个非常流行的数据可视化库,通常用于数据的图形表示以及使用内置函数的动画。 直接跳到末尾 去评论区领书 ? 在 Python 中创建条形图追赶动画(评论区送书) ? 方法一:使用 pause() 函数? 方法二:使用 F...

    h9911 评论0 收藏0
  • 首次公开,整理12年积累的博客收藏夹,零距离展示《收藏夹吃灰》系列博客

    摘要:时间永远都过得那么快,一晃从年注册,到现在已经过去了年那些被我藏在收藏夹吃灰的文章,已经太多了,是时候把他们整理一下了。那是因为收藏夹太乱,橡皮擦给设置私密了,不收拾不好看呀。 ...

    Harriet666 评论0 收藏0
  • 写一个树莓派管理系统

    摘要:二维码扫描成功解析获得的字符串信息,然后将其写入配置文件,然后重启树莓派系统。这样重启后的树莓派系统就可以连接到了。 源码及模型下载 1. 前言 我有一个树莓派和 ...

    linkin 评论0 收藏0
  • 数字图像处理:图像直方图基础知识介绍

    摘要:如果所有组的组距相同的直方图称为均匀直方图,否则称为非均匀直方图。但在图像处理中基于图像像素值的直方图是最常见的。对于缺乏基础的同仁,可以通过老猿的免费专栏专栏基础教程目录从零开始学习。 ...

    AdolphLWQ 评论0 收藏0
  • 数字图像处理:使用直方图统计进行图像增强

    摘要:如果将二者的处理的一些数据结合起来使用,则就是基于直方图统计进行图像增强。图中是通过直方图统计进行图像增强后的结果,可以看到另一个钨丝的比较明显的结构。 一、引...

    coolpail 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<