利用Python+OpenCV三步去除水印

作者:yunyun云芸 时间:2021-09-17 10:32:30 

一、推理原理

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)

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+OpenCV三步去除水印

去了后:

利用Python+OpenCV三步去除水印

来源:https://blog.csdn.net/yunyun889901/article/details/117293044

标签:Python,OpenCV,去水印
0
投稿

猜你喜欢

  • 利用Pjax下载动态加载插件方案分享

    2024-04-29 14:06:38
  • 深入了解Python的异常处理机制

    2023-09-03 09:25:41
  • 基于Python实现有趣的象棋游戏

    2022-06-11 20:37:15
  • Python数据类型转换实现方法

    2022-06-04 22:58:39
  • vue中的传值及赋值问题

    2024-05-28 15:45:32
  • Python如何向SQLServer存储二进制图片

    2021-01-06 08:23:54
  • Python3+pycuda实现执行简单GPU计算任务

    2022-06-04 09:55:29
  • c#如何利用定时器自动备份数据库详解

    2024-01-27 12:11:33
  • 特殊字符、常规符号及其代码对照表

    2010-08-24 18:13:00
  • Js nodeType 属性全面解析

    2024-04-16 09:53:30
  • javascript实现编写网页版计算器

    2024-04-23 09:26:25
  • Python3获取cookie常用三种方案

    2022-10-20 02:56:19
  • 如何利用python发送邮件

    2022-11-09 09:34:31
  • python list 查询是否存在并且并返回下标的操作

    2023-06-20 12:05:43
  • Python 匹配任意字符(包括换行符)的正则表达式写法

    2023-01-23 23:11:09
  • MySQL中索引优化distinct语句及distinct的多字段操作

    2024-01-18 20:43:38
  • Oracle系统表外键的更名

    2010-07-26 13:07:00
  • Python中json.dumps()函数的使用解析

    2022-11-04 19:41:09
  • python中os库的函数使用

    2022-05-03 22:16:57
  • 分享一个简单的python读写文件脚本

    2022-11-21 20:03:00
  • asp之家 网络编程 m.aspxhome.com