利用Python去除图片水印,太神奇了!

这篇具有很好参考价值的文章主要介绍了利用Python去除图片水印,太神奇了!。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

最近写文章遇到图片有水印,如何去除水印呢?

网上找了各种办法,也跑到小红书、抖音等平台找有没有不收费就去水印的网站,但是基本上都是需要VIP会员才可以。

话又说回来这种事情怎么能难倒一个程序员呢?Python的库有这么多肯定有一款适合我吧?

于是找来了OpenCV

OpenCV介绍

文档链接:https://docs.opencv.org/3.0-beta/doc/py_tutorials/py_tutorials.html

Opencv(Open Source Computer Vision Library)是一个基于开源发行的跨平台计算机视觉库,它实现了图像处理和计算机视觉方面的很多通用算法,已成为计算机视觉领域最有力的研究工具。

在这里我们要区分两个概念:

  • 图像处理和计算机视觉的区别:图像处理侧重于“处理”图像–如增强,还原,去噪,分割等等;

  • 而计算机视觉重点在于使用计算机来模拟人的视觉,因此模拟才是计算机视觉领域的最终目标。

OpenCV用C++语言编写,它具有C ++,Python,Java和MATLAB接口,并支持Windows,Linux,Android和Mac OS, 如今也提供对于C#、Ch、Ruby,GO的支持

OpenCV应用领域有:人机互动、物体识别、 图像分割、人脸识别、动作识别、运动跟踪、机器人、运动分析、机器视觉、结构分析、汽车安全驾驶等。

安装:

安装numpy:pip install numpy

安装opencv-python:pip install opencv-python

安装opencv-contrib-python**:pip install opencv-contrib-python

如果安装过程中有误,可以去下载安装whl:http://www.lfd.uci.edu/~gohlke/pythonlibs/,找到对应的版本下载。

在命令行安装成功后,进入开发环境导入cv2,如果未报错,就证明opencv安装成功。

去水印

图片展示

利用Python去除图片水印,太神奇了!

记得学过PS中有蒙版,可以使用蒙版遮罩完成。

代码:

python
# 方式一
import cv2


# 黑底白字
src = cv2.imread("images/a1.png")  # 默认的彩色图(IMREAD_COLOR)方式读入原始图像
# black.jpg
mask = cv2.imread('images/a2.png', cv2.IMREAD_GRAYSCALE)  # 灰度图(IMREAD_GRAYSCALE)方式读入水印蒙版图像
# 参数:目标修复图像; 蒙版图(定位修复区域); 选取邻域半径; 修复算法(包括INPAINT_TELEA/INPAINT_NS, 前者算法效果较好)
dst = cv2.inpaint(src, mask, 3, cv2.INPAINT_NS)

cv2.imwrite('result.jpg', dst)

但是这种方法使用的时候要求两张图片的大小必须是一样的,否则会一直报错

Traceback (most recent call last):
  File "/Users/running/PycharmProjects/untitled8/test1.py", line 16, in <module>
    get_water()
  File "/Users/running/PycharmProjects/untitled8/test1.py", line 11, in get_water
    dst = cv2.inpaint(src, mask, 3, cv2.INPAINT_NS)
cv2.error: OpenCV(4.1.2) /Users/travis/build/skvark/opencv-python/opencv/modules/photo/src/inpaint.cpp:748: error: (-209:Sizes of input arguments do not match) All the input and output images must have the same size in function 'icvInpaint'

可以分别打印一下尺寸看看,发现确实不一样

import cv2
from PIL import Image

# 黑底白字
src = cv2.imread("images/a1.png")  # 默认的彩色图(IMREAD_COLOR)方式读入原始图像
# black.jpg
mask = cv2.imread('images/a2.png', cv2.IMREAD_GRAYSCALE)  # 灰度图(IMREAD_GRAYSCALE)方式读入水印蒙版图像
# 参数:目标修复图像; 蒙版图(定位修复区域); 选取邻域半径; 修复算法(包括INPAINT_TELEA/INPAINT_NS, 前者算法效果较好)
print(src.shape, mask.shape)
dst = cv2.inpaint(src, mask, 3, cv2.INPAINT_NS)

cv2.imwrite('result1.jpg', dst)

(1454, 2182, 3) (1456, 2184)

于是要设置成一样的大小

import cv2
from PIL import Image

src = cv2.imread("images/a1.png")  # 默认的彩色图(IMREAD_COLOR)方式读入原始图像
# black.jpg
mask = cv2.imread('images/a2.png', cv2.IMREAD_GRAYSCALE)  # 灰度图(IMREAD_GRAYSCALE)方式读入水印蒙版图像
# 参数:目标修复图像; 蒙版图(定位修复区域); 选取邻域半径; 修复算法(包括INPAINT_TELEA/INPAINT_NS, 前者算法效果较好)
out2 = cv2.resize(mask,(2182,1454))
out1 = cv2.resize(src,(2182,1454))
print(out1.shape, out2.shape)
dst = cv2.inpaint(out1, out2, 3, cv2.INPAINT_NS)
#
cv2.imwrite('result.jpg', dst)

结果:

利用Python去除图片水印,太神奇了!

这种方式似乎还是可以看到一些水印,我们可以采用下面一种方法。

图片去水印原理

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 = "a1.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去除图片水印,太神奇了!文章来源地址https://www.toymoban.com/news/detail-440936.html

到了这里,关于利用Python去除图片水印,太神奇了!的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • python实战之去除视频水印&字幕

    获取资源链接:https://null119.lanzoul.com/b050jscbg         结果如下图所示:         python软件在官网下载即可,这里我们仅对如何批量安装包进行介绍,如下所示         注意:要求文件的分辨率一致,水印位置相同,否则无法进行批量操作。         打开命令行,

    2024年02月07日
    浏览(51)
  • uni-app微信小程序-利用canvas给图片添加水印

    选择图片 → 将图片绘制到 canvas 中并绘制水印 →将添加水印的图片绘制到 canvas 中 → 将 canvas 画布转换为图片地址 → 上传/展示操作 注意:微信小程序在选择照片或者唤起相机之前需要获取相应的 权限 利用 uni.getSetting 查看用户是否调用相机的权限(有就选择图片,没有就

    2024年02月06日
    浏览(59)
  • Python操作Word水印:添加文字或图片水印

    在Word文档中,可以添加半透明的图形或文字作为水印,以保护文档的原创性,防止未经授权的复制或使用。除了提供安全功能外,水印还可以展示文档创作者的信息、附加的文档信息,或者仅用于文档的装饰。本文将介绍如何使用 Spire.Doc for Python 在程序中的轻松 添加文字和

    2024年02月08日
    浏览(47)
  • 视频中的水印如何去除?教你几种简单去除视频水印方法

    视频中的水印如何去除掉呢?如果我们经常观看视频,可能会注意到一些视频上有水印。水印是在视频中嵌入的品牌标志或文字。这些水印可能会影响视频的观感,去除水印可以帮助我们在学习和研究方面更有效地使用视频资源。有时候,我们可能需要将视频插入到演示文稿

    2024年02月16日
    浏览(43)
  • 剪映怎么去除视频水印?分享这3个方法助你视频去除水印!

    如何在剪映中去除水印?剪映是一款广泛使用的短视频剪辑软件,但是有时我们使用的素材可能带有水印。今天我将分享三种方法,帮助你在剪映中去除水印。 方法一:放大视频画面 在剪映中导入视频后,你会发现视频的左上角和右下角有抖音号水印。单击视频素材。 选中

    2024年02月07日
    浏览(46)
  • 通过Python的PIL库给图片添加图片水印

    大家好,我是空空star,本篇给大家分享一下通过Python的PIL库给图片添加图片水印。 上一篇已经介绍过了PIL库是什么?安装PIL 、查看PIL版本,这里就不再介绍了。 这里我去C站首页找了一个,看起来是不是很酷。 7.1调整前 7.2调整后 8.1左上 8.2左下 8.3右上 8.4右下 8.5中间 其他位

    2023年04月19日
    浏览(51)
  • Python代码学习之给图片添加文字或图片水印

    图片加水印有什么好处?在现今的数字化时代,网络上的图片泛滥,盗图现象也越来越严重。因此,在发布文章时,为了保护自己的原创作品版权,很多人选择使用水印来保护他们的图片。这样就能更好地做到: 1.版权保护:在商业用途的照片中添加水印可以帮助保护作者的

    2024年02月09日
    浏览(47)
  • 一行Python代码给图片添加水印

    很多时候我们设计出一张精美的图片,但是一旦不加水印发到网上就会被他人抄袭,因此为了维护我们自身的版权,很多时候我们需要在一些图片或者视频中添加水印, 下面我将使用filestools模块分别在终端和python代码层面添加水印 。 1.下载ilestools模块 2.查看命令参数 在py

    2024年02月16日
    浏览(39)
  • js 视频水印去除

    参考文档:http://txapi.cn/api 收费 识别要解析的类型(需要收费) 不收费:(这边只说下大概实现思路,具体操作没试过,因为我们这边是通过接口python来实现的) 抖音去水印 逻辑: 通过短链获取到视频mid,通过mid获取到视频详情,再通过视频详情拿到视频地址,将有水印替

    2024年02月14日
    浏览(48)
  • 【Python】PIL给图片添加水印最全代码解释

    以下是一个添加水印的方法,你可以将其放在一个单独的 Python 文件中,然后在需要添加水印的地方调用该方法即可: 该方法接受五个参数: image_path :需要添加水印的图片路径; text :水印文本; font_path :字体文件路径; font_size :字体大小,默认为 40; fill :水印颜色,

    2024年02月05日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包