基于python的图像去水印

1 代码

python 复制代码
import cv2
import numpy as np

def remove_watermark(image_path, output_path):
    # 读取图片
    image = cv2.imread(image_path)

    # 转换为灰度图
    gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

    # 使用中值滤波去除噪声
    median_filtered = cv2.medianBlur(gray, 5)

    # 计算图像的梯度
    laplacian = cv2.Laplacian(median_filtered, cv2.CV_64F)

    # 将梯度图像转换为8位无符号整数
    laplacian_8u = np.uint8(np.absolute(laplacian))

    # 使用阈值操作找到潜在的水印区域
    _, thresholded = cv2.threshold(laplacian_8u, 30, 255, cv2.THRESH_BINARY)

    # 对阈值图像进行形态学操作,填充孔洞并平滑边缘
    kernel = np.ones((3, 3), np.uint8)
    closing = cv2.morphologyEx(thresholded, cv2.MORPH_CLOSE, kernel, iterations=2)

    # 创建一个掩码,将潜在的水印区域设置为白色
    mask = np.zeros_like(image)
    mask[closing == 255] = [255, 255, 255]

    # 将掩码转换为单通道图像
    mask_gray = cv2.cvtColor(mask, cv2.COLOR_BGR2GRAY)

    # 使用掩码去除水印
    result = cv2.inpaint(image, mask_gray, 3, cv2.INPAINT_TELEA)

    # 保存去水印后的图片
    cv2.imwrite(output_path, result)

remove_watermark('input.jpg', 'output.jpg')

2 去水印效果

图2-1 去水印前后对比

从图2-1可以看出并没有完美去除水印,这是由水印与背景颜色接近造成的,后面我会用深度学习的方法探索一番。

相关推荐
AIFQuant9 分钟前
如何利用免费股票 API 构建量化交易策略:实战分享
开发语言·python·websocket·金融·restful
沃达德软件14 分钟前
图像处理与复原技术
图像处理·人工智能·深度学习·神经网络·目标检测·计算机视觉·目标跟踪
布局呆星18 分钟前
SQLite数据库的介绍与使用
数据库·python
2401_8384725119 分钟前
用Python和Twilio构建短信通知系统
jvm·数据库·python
weixin_4521595526 分钟前
如何从Python初学者进阶为专家?
jvm·数据库·python
Hello.Reader28 分钟前
面向 403 与域名频繁变更的合规爬虫工程实践以 Libvio 系站点为例
爬虫·python·网络爬虫
Dfreedom.35 分钟前
图像滤波:非线性滤波与边缘保留技术
图像处理·人工智能·opencv·计算机视觉·非线性滤波·图像滤波
深蓝海拓41 分钟前
PySide6从0开始学习的笔记(二十五) Qt窗口对象的生命周期和及时销毁
笔记·python·qt·学习·pyqt
Dfreedom.1 小时前
开运算与闭运算:图像形态学中的“清道夫”与“修复匠”
图像处理·python·opencv·开运算·闭运算
2301_790300961 小时前
用Python读取和处理NASA公开API数据
jvm·数据库·python