python实现图片加文字水印OPenCV和PIL库
作者:huaweichenai 发布时间:2021-02-04 19:29:09
标签:加水印,openCV,PIL
在python中我们可以使用openCV给图片添加水印,这里注意openCV无法添加汉字水印,添加汉字水印上可使用PIL库给图片添加水印
一:openCV给图片添加水印
1:安装openCV
pip install opencv-python
2:使用openCV给图片添加水印实例:
# -*- coding: utf-8 -*-
import cv2
# 载入突破
img = cv2.imread('test.jpg')
# 给图片添加文字水印
# cv2.putText(图像,需要添加字符串,需要绘制的坐标,字体类型,字号,字体颜色,字体粗细)
img2 = cv2.putText(img, 'test', (100, 100), cv2.LINE_AA, 2, (249, 249, 249), 4)
# 保存图片
cv2.imwrite('wj.jpg', img2)
# 下面是将生成的图片再弹窗中显示
cv2.imshow('img',img2)
cv2.waitKey(0)
cv2.destoryAllWindows('img')
根据如上代码生成的水印图片如下:
二:使用PIL给图片添加水印
# -*- coding: utf-8 -*-
import cv2
import numpy
from PIL import Image, ImageDraw, ImageFont
img = cv2.imread('test.jpg')
# 判断是否是openCV图片类型
if (isinstance(img, numpy.ndarray)):
# 转化成PIL类型
img = Image.fromarray(cv2.cvtColor(img, cv2.COLOR_BGR2RGB))
draw = ImageDraw.Draw(img)
# 字体的格式
textSize = 80
fontStyle = ImageFont.truetype(
"font/simsun.ttc", textSize, encoding="utf-8")
# 绘制文本
left = 100
top = 100
text = '中国'
textColor = (168, 121, 103)
draw.text((left, top), text, textColor, font=fontStyle)
# 转换回OpenCV类型
img2 = cv2.cvtColor(numpy.asarray(img), cv2.COLOR_RGB2BGR)
# 保存图片
cv2.imwrite('wj.jpg', img2)
cv2.imshow('img',img2)
cv2.waitKey(0)
cv2.destoryAllWindows('img')
根据如上代码现象如下:
来源:https://blog.csdn.net/huaweichenai/article/details/103097283


猜你喜欢
- 上一章讲数据的处理,这一章讲数据处理之后呈现的结果,即你有可能看到Loss的走向等,这样方便我们调试代码。1.Tensorboard有两个常
- Vuex实现购物车功能(附:效果视频),供大家参考,具体内容如下功能描述:加购删除加减全选反选选中计算总价存储整体演示效果如下:首先介绍一下
- 在Python中,很多对象都是可以通过for语句来直接遍历的,例如list、string、dict等等,这些对象都可以被称为可迭代对象。至于
- 最近,Analysis with Programming加入了Planet Python。作为该网站的首批特约博客,我这里来分享一下如何通过
- 交叉表(cross-tabulation,简称crosstab)是⼀种⽤于计算分组频率的特殊透视表。语法详解:pd.crosstab(ind
- 通常的做法就是var jsonData = eval(xmlHttp.responseText)。这看起来似乎一切都是正确的,但当你运行代码
- 这段时间在处理SQL server 2000 SP4补丁打不上的问题上花了不少时间,回头想想应该总结一下:系统说明:dell1800服务器,
- 本文实例分析了php中ob_flush函数和flush函数用法。分享给大家供大家参考。具体如下:ob_flush()函数: 取出PHP bu
- Python的五个标准数据类型数字字符串列表元组字典一、数字不可变数据类型,存储值为数值1.创建对象,分配数值例:>>>
- 在设计主键的时候往往需要考虑以下几点: 1.无意义性:此处无意义是从用户的角度来定义的。这种无意义在一定程度上也会减少数据库的信息冗余。常常
- 来看看javascript怎么实现自动点击超级链接吧,主要使用了js中的onclick事件。这里推荐大家看看这篇文章js鼠标事件大全。看了这
- 我们今天就来看一下PHP 7正式版的算法和 wordpress 应用在其上的性能表现。PHP7 的安装,真是非常地向下兼容,下载,解压,把之
- 有个简单的查看方法,打开记事本,如要查看“Chr("119") w”,可以按下Alt+119 (先按住Alt不放,然后输
- openpyxl 的用法实例1.1 Openpyxl 库的安装使用openpyxl 模块是一个读写 Excel 2010 文档的 Pytho
- 以下备忘升级至 Vue CLI 3.x 版本后,将项目目录改为新结构时所需做的一些改动。1. 卸载与安装npm uninstall vue-
- 前言大家都知道其实学习Django非常简单,几乎不用花什么精力就可以入门了。配置一个url,分给一个函数处理它,返回response,几乎都
- 收集和分发数据是网络管理的职责之一,而且必须确保这些数据的准确性和安全性。不管它们是什么操作系统,数据库服务器需要特殊的管理以保证操作上的安
- 1.apt update && apt install -y curl wget sudo1.设置hostPVE官方要求,/
- 如果你有一批IP地址想要获得这些IP具体的信息,比如归属国家,城市等,最好的办法当时是调用现有的api接口来获取,我在之前就写过一篇文章,是
- str_replace — 子字符串替换 [str_replace]mixed str_replace ( mixed