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

相关推荐
BinaryBoss1 分钟前
Python mongodb批量修改数据库某个字段
数据库·python·mongodb
旦莫1 分钟前
自动化测试需求分析:从“做对”到“做好”的前提
python·测试开发·自动化·需求分析·ai测试
dagouaofei3 分钟前
工作计划 PPT 使用 AI 生成,与传统制作方式有什么不同
人工智能·python·powerpoint
智航GIS4 分钟前
10.2 Requests库入门
开发语言·python
hudawei9964 分钟前
win和Mac在创建python虚拟环境,启动环境等操作的异同
windows·python·macos·虚拟环境
叫我:松哥2 小时前
基于大数据和深度学习的智能空气质量监测与预测平台,采用Spark数据预处理,利用TensorFlow构建LSTM深度学习模型
大数据·python·深度学习·机器学习·spark·flask·lstm
吃茄子的猫8 小时前
quecpython中&的具体含义和使用场景
开发语言·python
じ☆冷颜〃9 小时前
黎曼几何驱动的算法与系统设计:理论、实践与跨领域应用
笔记·python·深度学习·网络协议·算法·机器学习
数据大魔方9 小时前
【期货量化实战】日内动量策略:顺势而为的短线交易法(Python源码)
开发语言·数据库·python·mysql·算法·github·程序员创富
APIshop9 小时前
Python 爬虫获取 item_get_web —— 淘宝商品 SKU、详情图、券后价全流程解析
前端·爬虫·python