python利用opencv去除水印方法

OpenCV(Open Source Computer Vision Library)是一个跨平台计算机视觉库,实现了图像处理和计算机视觉方面的很多通用算法

在python中可以利用opencv来去除水印

opencv安装

window10

OpenCV 3:http://www.lfd.uci.edu/~gohlke/pythonlibs/#opencv

Numpy:http://www.lfd.uci.edu/~gohlke/pythonlibs/#numpy

将下载好的whl文件放置到一个方便的目录,打开cmd,安装

pip install xxx

测试

import cv2

没有报错则说明成功

参考自https://www.ywlib.com/archives/39.html

下面开始去除水印, 使用58图片做测试

基于OpenCV的两种去水印方案

1. 基于 inpaint 方法(网上的方法,处理质量较低)

  • 算法理论:基于Telea在2004年提出的基于快速行进的修复算法(FMM算法),先处理待修复区域边缘上的像素点,然后层层向内推进,直到修复完所有的像素点
  • 处理方式:由ui人员制作出黑底白色水印且相同位置的水印蒙版图(必须单通道灰度图),然后使用inpaint方法处理原始图像,具体使用时可把水印区放粗,这样处理效果会好点

需要带水印的图,和该图一样大小的的黑底白色水印且位置相同的水印图

    test_dir = 'xxx'
    mask_dir = 'xxx'
    save_dir ='xxx'
    src = cv2.imread(rental_dir)
    mask = cv2.imread(wm_dir, cv2.IMREAD_GRAYSCALE)
    dst = cv2.inpaint(src, mask, 3, cv2.INPAINT_TELEA)
    cv2.imwrite(save_dir, dst)

2. 基于像素的反色中和(处理质量较高)

参考自ps去水印原理,通过一张白底的反色水印图来中和原图水印

 需要到水印的图,和该图一样大小的白底棕色(128,128,128)的水印且位置相同的水印图,128的效果比较好

复制代码
    test_dir = 'xxx'
    mask_dir = 'xxx'
    save_dir ='xxx'
    src = cv2.imread(test_dir)
    mask = cv2.imread(mask_dir)
    save = numpy.zeros(src.shape, numpy.uint8)
    for row in range(src.shape[0]):
        for col in range(src.shape[1]):
            for channel in range(src.shape[2]):
                if mask[row, col, channel] == 0:
                    val = 0
                else:
                    reverse_val = 255 - src[row, col, channel]
                    val = 255 - reverse_val * 256 / mask[row, col, channel]
                    if val < 0:
                        val = 0
                save[row, col, channel] = val
    cv2.imwrite(save_dir, save)
复制代码

第二种方面明显比第一种要好,但是水印的边角处理不好,可以先用二在用一,效果会更好

参考自https://my.oschina.net/u/2400083/blog/732321

posted @   菲菲菲菲菲常新的新手  阅读(21769)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具
点击右上角即可分享
微信分享提示