利用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)
四、效果图
没去水印前:
去了后:
来源: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