点击上方“何俊林”,马上关注,每天早上8:50准时推送

真爱,请置顶或星标

这两天公司来了一个新的需求——去除水印,对于我一个从未接触过的这种事情的人来说,当时我是蒙的。不过首先我就去搜索了一下是否有该种合适的功能模块,经过我的筛选,发现opencv应该是最有满足我这个需求可能的模块了。

我先把我的测试例子放上来。

测试图片(你可能在别处看到过,没错就是你看到过的那个例子图)

第一种方法:

  该方法看着是不是很简单?没错就这么几行代码:

import cv2def get_water():# 黑底白字
    src = cv2.imread('yuan.png')  # 默认的彩色图(IMREAD_COLOR)方式读入原始图像# black.jpg
    mask = cv2.imread('di.png', cv2.IMREAD_GRAYSCALE)  # 灰度图(IMREAD_GRAYSCALE)方式读入水印蒙版图像# 参数:目标修复图像; 蒙版图(定位修复区域); 选取邻域半径; 修复算法(包括INPAINT_TELEA/INPAINT_NS, 前者算法效果较好)
    dst = cv2.inpaint(src, mask, 3, cv2.INPAINT_NS)
    cv2.imwrite('result1.jpg', dst)
get_water()

但是这种方式需要一个美工,让他配合你做一张di.png:

看完上面这么多废话,其实你就想看看效果如何,那么来看一下该方式效果图

是不是想说效果很差,其实在我所测试使用的方法中,这种方法已经算是效果不错的了。别着急走,下面还有一种比这效果更好的方式。

第二种方式:

  还是以上一张图片为例,这种方式还是需要美工配合,只是图片变了,di2.png如下:

同时换了一种算法模式,但是注意该方法效率不高,使用该图片时跑一次代码就行了,但是若是别的图片,你可能需要跑几遍代码之后,才能出现最终效果(若你发现采用该方式去除水印,发现去除后的效果,只是水印颜色变淡了,那么请你在对处理过的图,再次执行该代码,如此多次之后,请用肉眼识别最好的效果)

import cv2import numpy
def get_water2():
    src = cv2.imread('yuan.png')
    mask = cv2.imread('di2.png')
    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 = 0else:
                    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('result2.jpg', save)
get_water2()

不多说直接,上效果图

这两种方式,是相对来说效果很好的去除水印方式,也就是”人工”去除水印。

本文作者:luckly,原文链接:https://www.cnblogs.com/yaoxiaofeng/p/11188557.html

 推荐阅读

python面试题37道(附答案)看完面试不愁了

python爬取拉勾网数据并进行数据可视化

Python中的内存管理机制

matlab去除图片水印_Python利用OpenCV去除图片水印相关推荐

  1. python图片切面_python 利用opencv进行图片切割

    自学opencv也有十几天了,一直练习教程上面的例子总感觉不够,刚好碰到一个老师出的数学建模题涉及图片处理兴趣立马上来,决定利用所学的解决这个建模题 下面是数学建模题: 最强大脑 近期,江苏卫视正在热 ...

  2. python 去除水印_python 利用opencv去除图片水印

    $(function () { changeIndReadCommentStyle(); //返回顶部 $('#back-to-top').click(function (e) { $('html,b ...

  3. python利用opencv去除图片logo_python 基于opencv去除图片阴影

    一.前言 如果你自己打印过东西,应该有过这种经历.如果用自己拍的图片,在手机上看感觉还是清晰可见,但是一打印出来就是漆黑一片.比如下面这两张图片: 因为左边的图片有大片阴影,所以打印出来的图片不堪入目 ...

  4. 新生研讨课:利用OpenCV处理带有水印的图片的调研报告

    电子科技大学 格拉斯哥学院 2017级 2017200602038 席文骥 目录 1.引言 2.技术背景 3.具体问题 4.实现方法 5.结语 6.参考 1.引言 在我们学院去年开设的新生研讨课上,曾 ...

  5. python视频图片识别算法_python利用Opencv进行人脸识别(视频流+图片)

    首先:需要在在自己本地安装opencv具体步骤可以问度娘 如果从事于开发中的话建议用第三方的人脸识别(推荐阿里) 1.视频流中进行人脸识别 # -*- coding: utf-8 -*- import ...

  6. python换照片底色_Python 利用OpenCV给照片换底色的示例代码

    OpenCV的全称是:Open Source Computer Vision Library.OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉库,可以运行在Linux.Windows和M ...

  7. python图像切割成多边形_python通过opencv实现图片裁剪原理解析

    这篇文章主要介绍了python通过opencv实现图片裁剪原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 图像裁剪的基本概念 : 图像裁剪是 ...

  8. 利用opencv读取图片将其作为opengl的纹理图片的实现方法

    在opengl中实现三维物体的纹理贴图的第一步就是要读入图片,然后指定该图片为纹理图片.我最早接手的项目中是通过一个专门的读取bmp图片的函数来实现纹理图片的读取的.这个函数有三个缺点: 1.只能读取 ...

  9. 利用OpenCV识别图片背景是否透明

    因为公司的需求,有几百万张图片需要识别,筛选出背景是透明的图片,我上网找了一圈也没看到成熟的方案,于是自己想了一个比较简陋但是还算是挺好用的方案. 大概的图片就是这些种类吧,图一图三是我想要筛选出来的 ...

最新文章

  1. pandas中DataFrame的ix,loc,iloc索引方式的异同
  2. python软件界面-用Html来写Python桌面软件的UI界面-htmlPy
  3. angular js环境配置
  4. java百度地图添加标注_调取百度地图接口,实现取自己的实时位置,然后可以在百度地图上添加信息标注...
  5. 技术面试者的技术深度和广度
  6. 让ProgressPar动起来
  7. 基于各系统平台(RedHat Linux、SUSE Linux、CentOS、SUN Solaris10) FTP服务的配
  8. 怎么利用计算机计算潮流计算,计算机潮流计算.ppt
  9. ttest函数使用方法_【Excel函数】TTEST函数 - 曹海峰个人博客
  10. pe下查看ip和计算机名称,利用U盘pe系统查找原来电脑ip
  11. 概率论复习笔记(一)随机事件及其概率
  12. 2021 秋招算法岗人间地狱?人工智能方向年薪 60w 起!
  13. 黄哥python培训怎样
  14. uniapp 开发微信小程序,通过高德SDK获取当位置详细信息
  15. Python Flask Web教程002:Flask 快速上手
  16. android:很抱歉,XXX已停止运行
  17. Ubuntu 18.04 LTS 下进入和退出tty模式
  18. 博客2.0时代——读者的赞赏,才是原创的动力
  19. (三)linux文件与目录管理
  20. 室内膨胀型防火涂料根据BS 476-21 耐火标准测定需要符合几项?

热门文章

  1. SpringBoot枚举传参
  2. matlab中的histc,Matlab histc与矢量箱
  3. 1957模拟计算机,统考计算机作业
  4. 【带你重拾Redis】Redis 主从架构
  5. Redis最佳实践:业务层面和运维层面优化
  6. 如何做一名专业的软件测试工程师
  7. java程序分为哪两大类_JAVA程序基础(第1-2章分类)复习-1
  8. 第02章_MySQL环境搭建
  9. open python语言实现 pdf_使用python操作Pdf代码实现
  10. show index mysql_MySQL SHOW INDEX 语法解析