Python实现处理图片水印的方法详解
原图:
去水印后:
程序非常简单,首先读取图片后,转为HSV通道图像。
image = cv2.imread("watermark.png") HSV = cv2.cvtColor(image, cv2.COLOR_BGR2HSV)
参考文末补充内容获取水印处的HSV值的范围
我这张图片的水印HSV值大概范围是
背景HSV值为
黑色正文部分HSV值为
于是:
mask = cv2.inRange(HSV, (0, 0, 195), (0, 0, 255)) cv2.imshow("mask", mask)
结束!!
处理后文字有点锯齿状,试了图像增强矫正和图像平滑处理效果都不明显(原图有些模糊也是原因之一)
如果有好的方法,麻烦教一教我!谢谢!
完整代码
import cv2 image = cv2.imread(r"watermark.png") HSV = cv2.cvtColor(image, cv2.COLOR_BGR2HSV) # cv2.imshow("HSV", HSV) mask = cv2.inRange(HSV, (0, 0, 195), (0, 0, 255)) cv2.imshow("mask", mask) cv2.imwrite('watermark-result.png', mask) cv2.waitKey(0)
补充
用python和opencv定义鼠标点击事件获取图片各个位置的HSV值(附代码)
效果如下,鼠标左键点击图片中任意位置显示该点的HSV值。
源代码:
import cv2 # 读取图片 image = cv2.imread(r"./images/screenshot/target_open.jpg") # 转为HSV图 HSV = cv2.cvtColor(image, cv2.COLOR_BGR2HSV) # 定义一个鼠标左键按下去的事件 def getpos(event, x, y, flags, param): if event == cv2.EVENT_LBUTTONDOWN: print(HSV[y, x]) # cv2.imshow('image', image) cv2.imshow("imageHSV", HSV) cv2.setMouseCallback("imageHSV", getpos) cv2.waitKey(0)
到此这篇关于Python实现处理图片水印的方法详解的文章就介绍到这了,更多相关Python处理图片水印内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!
相关推荐
-
python为图片和PDF去水印详解
目录 安装模块 获取图片的 RGB 图片去水印 PDF 去水印 图片转为 pdf 总结 网上下载的 pdf 学习资料有一些会带有水印,非常影响阅读.比如下面的图片就是在 pdf 文件上截取出来的. 安装模块 PIL:Python Imaging Library 是 python 上非常强大的图像处理标准库,但是只能支持 python 2.7,于是就有志愿者在 PIL 的基础上创建了支持 python 3的 pillow,并加入了一些新的特性. pip install pillow pymupdf
-
Python实现为图片添加水印的示例详解
目录 1.引言 2.filestools介绍 2.1 安装 2.2 filestools 功能介绍 2.3 watermarker模块介绍 2.4 代码实例 补充 1.引言 小屌丝:鱼哥,这个周末过得咋样 小鱼:酸爽~ ~ 小屌丝:额~~ 我能想到的,是这样吗? 小鱼:有多远你走多远. 小屌丝:唉,鱼哥,你别说,我觉得这个图片,跟你平时的表情挺贴切的. 小鱼:你想咋的!!!! 小屌丝:突然想到,能不能给你来一个专属的图片,例如追加水印啥的,让别人无图可盗!! 小鱼:嘿~ 你别说,还真的可以哈,
-
Python批量图片去水印的方法
平常工作中,有时为了采用网络的一些素材,但这些素材往往被打了水印,如果我们不懂PS就无法去掉水印,或者无法批量去掉水印.这些就很影响我们的工作效率. 今天我们就一起来,用Python + OpenCV三步去除水印,去水印需要使用的库:cv2.numpy.cv2是基于OpenCV的图像处理库,可以对图像进行腐蚀,膨胀等操作:numpy这是一个强大的处理矩阵和维度运算的库. 图片去水印原理 1.标定噪声的特征,使用cv2.inRange二值化标识噪声对图片进行二值化处理,具体代码:cv2.inRa
-
Python批量添加图片水印的实现
目录 一.前言 二.文字水印 三.图片水印 一.前言 现在盗图是非常常见的事情,许多人在使用图片时都不会标注图片的出处或者提及作者,这个时候水印就是个很好的东西了.我们可以给图片添加水印后再分享出去,这样就可以让其它人知道图片作者相关的信息.今天我们就带大家来实现水印的添加. 二.文字水印 在添加水印的时候,我们比较常用的就是文字水印.比如@ZackSock.@juejin:ZackSock等.这种水印的添加非常简单,只需要使用到Pillow模块的添加文字的操作即可,代码如下: from PIL
-
Python实现图片批量加入水印代码实例
这篇文章主要介绍了Python实现图片批量加入水印代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 写文章的时候可以设置是否添加水印.可是,有些图片可能想加水印,有些不想加水印,该怎么办呢? 配置环境 python3 + pillow pip3 install pillow 引入库 from PIL import Image, ImageSequence import os import random 效果预览: 使用方法: 在脚本同目录
-
python实现水印图片功能
在做一些工作的时候,有时候会涉及到给图片加上水印,这个如果手动添加的话,效率太低了,通常选择代码完成.下面这个是给图像添加文字水印(图片水印还在研究中) 比如,在下面的图片中添加 “美团外卖” 水印 from PIL import Image,ImageDraw,ImageFont import numpy as np import random import cv2 import re ####################################################
-
运用python去除图片水印
目录 OpenCV + Numpy 函数简介 色彩转换 PIL + itertools 由于图片水印的种类有很多,今天我们先讲最简单的一种. 即上图中的①类水印,这种水印存在白色背景上的文档里,水印是灰色,需要保留的文字是黑色. 这种通常可以进行简单的亮度/对比度转换,直到水印消失并降低亮度以进行补偿[1].参考别人的方法,我发现可以用多种方法去除水印.大致原理比较相似,下面先讲OpenCV的方法. OpenCV + Numpy 本方法需要使用的库:cv2.numpy.cv2是基于OpenCV
-
Python实现处理图片水印的方法详解
原图: 去水印后: 程序非常简单,首先读取图片后,转为HSV通道图像. image = cv2.imread("watermark.png") HSV = cv2.cvtColor(image, cv2.COLOR_BGR2HSV) 参考文末补充内容获取水印处的HSV值的范围 我这张图片的水印HSV值大概范围是 背景HSV值为 黑色正文部分HSV值为 于是: mask = cv2.inRange(HSV, (0, 0, 195), (0, 0, 255)) cv2.imshow(&qu
-
Python批量处理图片大小尺寸方法详解
目录 前言 简单讲解 1.建目录 2.图片大小修改 批量修改图片Size 1.目录处理 2.图片批量修改Size完整代码 前言 出发点,网上下了一批png,使用wxFormBuilder做软件工具栏的图标,原图做出来的效果 这么大的一个图标让笔者差点就笑岔气了 以前都是用工具改变图片的大小,这次想了下,开发的事情肯定用脚本搞定 所以决定写一个脚本让图片变成32x32,原图是124x128的, 简单讲解 本文使用Pillow(PIL), 安装: pip install pillow 这个库有很多图
-
Python去除图片水印实现方法详解
目录 OpenCV介绍 去水印 图片去水印原理 最近写文章遇到图片有水印,如何去除水印呢? 网上找了各种办法,也跑到小红书.抖音等平台找有没有不收费就去水印的网站,但是基本上都是需要VIP会员才可以. 话又说回来这种事情怎么能难倒一个程序员呢?Python的库有这么多肯定有一款适合我吧? 于是找来了OpenCV. OpenCV介绍 文档链接:https://docs.opencv.org/3.0-beta/doc/py_tutorials/py_tutorials.html Opencv(Ope
-
Python对象类型及其运算方法(详解)
基本要点: 程序中储存的所有数据都是对象(可变对象:值可以修改 不可变对象:值不可修改) 每个对象都有一个身份.一个类型.一个值 例: >>> a1 = 'abc' >>> type(a1) str 创建一个字符串对象,其身份是指向它在内存中所处的指针(在内存中的位置) a1就是引用这个具体位置的名称 使用type()函数查看其类型 其值就是'abc' 自定义类型使用class 对象的类型用于描述对象的内部表示及其支持的方法和操作 创建特定类型的对象,也将该对象称为该类
-
Python 常用模块 re 使用方法详解
一.re模块的查找方法: 1.findall 匹配所有每一项都是列表中的一个元素 import re ret = re.findall('\d+','asd鲁班七号21313') # 正则表达式,待匹配的字符串,flag # ret = re.findall('\d','asd鲁班七号21313') # 正则表达式,待匹配的字符串,flag # print(ret) 2.search 只匹配从左到右的第一个,等到的不是直接的结果,而是一个变量,通过这个变量的group方法来获取结果 impo
-
在自动化中用python实现键盘操作的方法详解
原来在robotframework中使用press key方法进行键盘的操作,但是该方法需要写被操作对象的locator,不是很方便,现在找到了一种win32api库写键盘操作的一个方法(注意:此方法被操作界面必须在顶层),首先,需要安装win32api的python库,使用命令: pip install pywin32 具体实现代码如下: import win32api import win32con class MyLibrary(object): def keybd_event(self,
-
对Python实现累加函数的方法详解
这个需求比较奇怪,要求实现Sum和MagaSum函数,实现以下功能 Sum(1) =>1 Sum(1,2,3) =>6 MegaSum(1)() =>1 MegaSum(1)(2)(3)() =>6 实际上Sum就是Python自建的sum函数,它支持变参,变参怎么实现,自然是*args,所以很容易写出雏形: Sum def Sum(*args): count = 0 for i in args: count+=i return count 第二个函数就有点皮了,它要求有参数的时候
-
python对于requests的封装方法详解
由于requests是http类接口的核心,因此封装前考虑问题比较多: 1. 对多种接口类型的支持: 2. 连接异常时能够重连: 3. 并发处理的选择: 4. 使用方便,容易维护: 当前并未全部实现,后期会不断完善.重点提一下并发处理的选择:python的并发处理机制由于存在GIL的原因,实现起来并不是很理想,综合考虑多进程.多线程.协程,在不考虑大并发性能测试的前提下使用了多线程-线程池的形式实现.使用的是 concurrent.futures模块.当前仅方便支持webservice接口. #
-
对Python捕获控制台输出流的方法详解
有时候我们的代码里可能要调用控制台命令,比如我想用Python写一个批量编译 .java 文件的脚本,用到如下代码 常规用法 os.system import os,traceback try: p = os.system("javac Test.java") print p except: print "\nexcept:\n" print traceback.format_exc() 如然编译成功会返回一个0,如果错误会返回一个非0的值给p,这种方法可以知道执行
-
python文件处理fileinput使用方法详解
这篇文章主要介绍了python文件处理fileinput使用方法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 一.介绍 fileinput模块可以对一个或多个文件中的内容进行迭代.遍历等操作,我们常用的open函数是对一个文件进行读写操作. fileinput模块的input()函数比open函数更高效和好用,体现在: input()函数生成一个迭代器,保证了在遇到大文件的读取时不会占用太大的内存. 用fileinput对文件进行循环遍历
随机推荐
- 通过使用正确的search arguments来提高SQL Server数据库的性能
- javascript之弹出窗口居中的代码
- python爬虫入门教程--快速理解HTTP协议(一)
- PHP静态成员变量
- php中将指针移动到数据集初始位置的实现代码[mysql_data_seek]
- Python过滤列表用法实例分析
- Android数据持久化之File机制分析
- NextRecordset 和 GetRows 双簧合奏
- Comp 逐字节地比较两个文件或几组文件的内容
- jQuery实现的经典竖向伸缩菜单效果代码
- jquery mobile页面跳转后样式丢失js失效的解决方法
- javascript实现删除前弹出确认框
- 超强IE 也可由你轻松打造(上)
- 浅谈java线程中生产者与消费者的问题
- Android ListView与ScrollView冲突的解决方法总结
- 布隆过滤器(Bloom Filter)的Java实现方法
- springmvc学习笔记-返回json的日期格式问题的解决方法
- Java实现的连续奇数(n+2*x)是合数的算法题暴力算法
- IOS开发向右滑动返回前一个页面功能(demo)
- php获取textarea的值并处理回车换行的方法