基于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可以看出并没有完美去除水印,这是由水印与背景颜色接近造成的,后面我会用深度学习的方法探索一番。

相关推荐
亿牛云爬虫专家6 分钟前
Kubernetes下的分布式采集系统设计与实战:趋势监测失效引发的架构进化
分布式·python·架构·kubernetes·爬虫代理·监测·采集
蹦蹦跳跳真可爱5894 小时前
Python----OpenCV(图像増强——高通滤波(索贝尔算子、沙尔算子、拉普拉斯算子),图像浮雕与特效处理)
人工智能·python·opencv·计算机视觉
nananaij4 小时前
【Python进阶篇 面向对象程序设计(3) 继承】
开发语言·python·神经网络·pycharm
雷羿 LexChien4 小时前
从 Prompt 管理到人格稳定:探索 Cursor AI 编辑器如何赋能 Prompt 工程与人格风格设计(上)
人工智能·python·llm·编辑器·prompt
敲键盘的小夜猫5 小时前
LLM复杂记忆存储-多会话隔离案例实战
人工智能·python·langchain
高压锅_12205 小时前
Django Channels WebSocket实时通信实战:从聊天功能到消息推送
python·websocket·django
Chef_Chen6 小时前
从0开始学习计算机视觉--Day08--卷积神经网络
学习·计算机视觉·cnn
胖达不服输7 小时前
「日拱一码」020 机器学习——数据处理
人工智能·python·机器学习·数据处理
吴佳浩7 小时前
Python入门指南-番外-LLM-Fingerprint(大语言模型指纹):从技术视角看AI开源生态的边界与挑战
python·llm·mcp
吴佳浩7 小时前
Python入门指南-AI模型相似性检测方法:技术原理与实现
人工智能·python·llm