Python批量图片去水印的方法

 更新时间:2021年05月26日 10:40:38   作者:chingho  
​平常工作中,有时为了采用网络的一些素材,但这些素材往往被打了水印,如果我们不懂PS就无法去掉水印,或者无法批量去掉水印。本文就介绍了Python批量图片去水印的方法,感兴趣的可以了解一下

​平常工作中,有时为了采用网络的一些素材,但这些素材往往被打了水印,如果我们不懂PS就无法去掉水印,或者无法批量去掉水印。这些就很影响我们的工作效率。

今天我们就一起来,用Python + OpenCV三步去除水印,去水印需要使用的库:cv2、numpy。cv2是基于OpenCV的图像处理库,可以对图像进行腐蚀,膨胀等操作;numpy这是一个强大的处理矩阵和维度运算的库。

图片去水印原理

1、标定噪声的特征,使用cv2.inRange二值化标识噪声对图片进行二值化处理,具体代码:cv2.inRange(img, np.array([200, 200, 240]), np.array([255, 255, 255])),把[200, 200, 200]~[255, 255, 255]以外的颜色处理为0;

2、使用OpenCV的dilate方法,扩展特征的区域,优化图片处理效果;

3、使用inpaint方法,把噪声的mask作为参数,推理并修复图片。

去掉右下角的水印步骤

1、从源图片,截取右下角部分,另存为新图片;

2、识别水印,颜色值为:[200, 200, 200]~[255, 255, 255]

3、去掉水印,还原图片;

4、把源图片、去掉水印的新图片,进行重叠合并;

实现代码

效果对比

import cv2
import numpy as np
from PIL import Image
import os
​
dir = os.getcwd()
path = "1.jpg"
newPath = "new.jpg"
img=cv2.imread(path,1)
hight,width,depth=img.shape[0:3]
​
#截取
cropped = img[int(hight*0.8):hight, int(width*0.7):width]  # 裁剪坐标为[y0:y1, x0:x1]
cv2.imwrite(newPath, cropped)
imgSY = cv2.imread(newPath,1)
​
#图片二值化处理,把[200,200,200]-[250,250,250]以外的颜色变成0
thresh = cv2.inRange(imgSY,np.array([200,200,200]),np.array([250,250,250]))
#创建形状和尺寸的结构元素
kernel = np.ones((3,3),np.uint8)
#扩展待修复区域
hi_mask = cv2.dilate(thresh,kernel,iterations=10)
specular = cv2.inpaint(imgSY,hi_mask,5,flags=cv2.INPAINT_TELEA)
cv2.imwrite(newPath, specular)
​
#覆盖图片
imgSY = Image.open(newPath)
img = Image.open(path)
img.paste(imgSY, (int(width*0.7),int(hight*0.8),width,hight))
img.save(newPath)

实现效果如下图,这个默认是去掉白色右下角的水印,大家可以根据自己的需求进行更改。

到此这篇关于Python批量图片去水印的示例代码的文章就介绍到这了,更多相关Python批量图片去水印的示例代码内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • python命令行引导用户填写可用的ip地址和端口号实现

    python命令行引导用户填写可用的ip地址和端口号实现

    这篇文章主要为大家介绍了python命令行引导用户填写可用的ip地址和端口号实现详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-11-11
  • Python实现将Markdown一键打印为A4专业文档

    Python实现将Markdown一键打印为A4专业文档

    这篇文章主要为大家详细介绍了如何使用Python实现将Markdown一键打印为A4专业文档,文中的示例代码讲解详细,感兴趣的小伙伴可以了解下
    2026-01-01
  • Python中Django 后台自定义表单控件

    Python中Django 后台自定义表单控件

    本篇文章主要介绍了Python中Django 后台自定义表单控件,其实 django 已经为我们提供了一些可用的表单控件,比如:多选框、单选按钮等,有兴趣的开业了解一下。
    2017-03-03
  • pandas pivot_table() 按日期分多列数据的方法

    pandas pivot_table() 按日期分多列数据的方法

    今天小编就为大家分享一篇pandas pivot_table() 按日期分多列数据的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-11-11
  • python3多线程知识点总结

    python3多线程知识点总结

    在本篇文章里小编给各位分享的是关于python3多线程的相关知识点内容,以后需要的朋友们可以参考下。
    2019-09-09
  • Python的Tornado框架的异步任务与AsyncHTTPClient

    Python的Tornado框架的异步任务与AsyncHTTPClient

    Tornado的奥义就在于异步处理来提高单线程的Python程序执行性能,这里我们就来详解Python的Tornado框架的异步任务与AsyncHTTPClient,需要的朋友可以参考下
    2016-06-06
  • python变量的存储原理详解

    python变量的存储原理详解

    这篇文章主要介绍了python变量的存储原理详解,对于python而言,python的一切变量都是对象,变量的存储,采用了引用语义的方式,存储的只是一个变量的值所在的内存地址,而不是这个变量的只本身,需要的朋友可以参考下
    2019-07-07
  • Python使用Flask实现将DOCX转为Markdown

    Python使用Flask实现将DOCX转为Markdown

    这篇文章主要为大家详细介绍了如何基于Python的Flask框架编写一个项目,能够将上传的.docx文件转换为 Markdown,并提取图片以供下载预览,感兴趣的小伙伴可以了解下
    2026-01-01
  • 详解Python中的strftime()方法的使用

    详解Python中的strftime()方法的使用

    这篇文章主要介绍了详解Python中的strftime()方法的使用,是Python入门学习中的基础知识,需要的朋友可以参考下
    2015-05-05
  • matplotlib 输出保存指定尺寸的图片方法

    matplotlib 输出保存指定尺寸的图片方法

    今天小编就为大家分享一篇matplotlib 输出保存指定尺寸的图片方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-05-05

最新评论