图片修复程序-可用于水印去除

在现实的生活中,我们可能会遇到一些美好的或是珍贵的图片被噪声干扰,比如旧照片的折痕,比如镜头上的灰尘或污渍,更或者是某些我们想为我所用但有讨厌水印,那么有没有一种办法可以消除这些噪声呢?

答案是肯定的,依然是被我们用了无数次的OpenCV这款优秀的框架。

效果预览

图片修复原理

那OpenCV究竟是怎么实现的,简单的来说就是开发者标定噪声的特征,在使用噪声周围的颜色特征推理出应该修复的图片的颜色,从而实现图片修复的。

程序实现解析

  1. 标定噪声的特征,使用cv2.inRange二值化标识噪声对图片进行二值化处理,具体代码:cv2.inRange(img, np.array([240, 240, 240]), np.array([255, 255, 255])),把[240, 240, 240]~[255, 255, 255]以外的颜色处理为0;
  2. 使用OpenCV的dilate方法,扩展特征的区域,优化图片处理效果;
  3. 使用inpaint方法,把噪声的mask作为参数,推理并修复图片;

完整代码

#coding=utf-8
#图片修复import cv2
import numpy as nppath = "img/inpaint.png"img = cv2.imread(path)
hight, width, depth = img.shape[0:3]#图片二值化处理,把[240, 240, 240]~[255, 255, 255]以外的颜色变成0
thresh = cv2.inRange(img, np.array([240, 240, 240]), np.array([255, 255, 255]))#创建形状和尺寸的结构元素
kernel = np.ones((3, 3), np.uint8)#扩张待修复区域
hi_mask = cv2.dilate(thresh, kernel, iterations=1)
specular = cv2.inpaint(img, hi_mask, 5, flags=cv2.INPAINT_TELEA)cv2.namedWindow("Image", 0)
cv2.resizeWindow("Image", int(width / 2), int(hight / 2))
cv2.imshow("Image", img)cv2.namedWindow("newImage", 0)
cv2.resizeWindow("newImage", int(width / 2), int(hight / 2))
cv2.imshow("newImage", specular)
cv2.waitKey(0)
cv2.destroyAllWindows()

图片扩展与腐蚀更多资料:http://opencv-python-tutroals.readthedocs.io/en/latest/py_tutorials/py_imgproc/py_morphological_ops/py_morphological_ops.html

基于python的图片修复程序-可用于水印去除相关推荐

  1. python 去除水印_基于python的图片修复程序(实现水印去除)

    图片修复程序-可用于水印去除 在现实的生活中,我们可能会遇到一些美好的或是珍贵的图片被噪声干扰,比如旧照片的折痕,比如镜头上的灰尘或污渍,更或者是某些我们想为我所用但有讨厌水印,那么有没有一种办法可以 ...

  2. python图片修复软件下载_python 实现图片修复(可用于去水印)

    在现实的生活中,我们可能会遇到一些美好的或是珍贵的图片被噪声干扰,比如旧照片的折痕,比如镜头上的灰尘或污渍,更或者是某些我们想为我所用但有讨厌水印,那么有没有一种办法可以消除这些噪声呢? 答案是肯定的 ...

  3. 基于Python实现图片格式转换的小程序

    基于Python实现图片格式转换的小程序 特点: 批量处理图片 转换常见的4种图片格式 运行窗口 运行窗口-1 选择图片(可批量选择)-2 假设选中4张JEPG格式的图片 格式选择窗口-3 假设选择目 ...

  4. python如何获取图片的尺寸_如何基于Python获取图片的物理尺寸

    如何基于Python获取图片的物理尺寸 这篇文章主要介绍了如何基于Python获取图片的物理尺寸,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 问题 ...

  5. python 放射 水平_基于Python的放射性核素大气扩散程序初步开发与验证

    龙源期刊网 http://www.qikan.com.cn 基于 Python 的放射性核素大气扩散程序初 步开发与验证 作者:刘朋杰,张旖旎,刘天元 来源:<科学与财富> 2018 年第 ...

  6. 【Python+图片切割+图片合并】基于Python的图片批量切割与合并(保持原像素不变,不会出现像素大小不匹配、填充黑边的问题)

    基于Python的图片批量切割与合并(保持原像素不变,不会出现像素大小不匹配.填充黑边的问题) 前言 效果图 1.批量读取文件 2.清空目标目录方法(配合切割图片方法使用) 3.批量切割图片(像素不足 ...

  7. python如何爬取图片到指定文件夹论文_基于Python的图片爬虫程序设计

    互联网中包含大量有价值的 数据,网络爬虫通过既定规则可 以自动地抓取互联网数据并下载 至本地存储.研究网络爬虫的工 作原理和基于 Python 网络信息爬 取技术模块功能,基于 Requests- B ...

  8. 火焰识别python_基于Python的火焰识别程序

    本期介绍一下笔者在试验数据处理时写的一个用于火焰识别的小程序,该小程序的功能是对拍摄到的火焰图像进行提取.增强.降噪和识别,并输出相应处理过的火焰图像以及火焰参数,如传播距离.面积等.该程序基于Pyt ...

  9. 基于Python改变图片像素大小

    用python改变图片像素大小非常快速,编辑好代码运行程序不到1秒就产生结果. 有的网站上传照片时,限定了照片像素大小,这时候小小一份代码就可以快速解决我们的需求. 下面代码需要修改main函数中的f ...

最新文章

  1. 妙用QTP F1帮助功能
  2. c语言水印添加,[求助]C语言 bmp文件加上水印
  3. Django 多数据库联用(看着不错还有源码可以下载)
  4. Python学习笔记9—文件
  5. php函数用粗体字显示,用来设置粗体字的属性是什么
  6. 使用工具将SQLServer转MYSQL的方法(连数据)
  7. 微信公众号python人工智能回复_python实现微信机器人: 登录微信、消息接收、自动回复功能...
  8. 基于bootstrap_登陆页面
  9. Java语言西安交大高起专,王树国校长在西安交通大学2018年研究生毕业典礼暨学位授予仪式上的讲话...
  10. 华为畅享8的悬浮窗在哪里_1299元起,更大超清屏幕+强劲续航 华为畅享20 SE发布...
  11. torch.max;PyTorch中 tensor.detach() 和 tensor.data 的区别;
  12. mysql的应用_mysql应用场景
  13. ODAC安装配置与使用详解
  14. Stored Outline
  15. Python -- 使用if语句处理列表
  16. 显卡如何超频?超多少合适?
  17. 利用高频信号改变钢丝磁性来实现大量存储信息的钢丝录音机
  18. stm32mp157开发板MIC 接口测试方法
  19. 嵌入式面试准备一---USART、IIC、SPI、CAN
  20. 还在死守TCP吗,来看看即将成为HTTP3.0标准协议的QUIC

热门文章

  1. JDK源码解析之Java.util.Collection
  2. JDK源码解析之 Java.lang.Object
  3. linux tips 技巧笔记一
  4. MIP 技术交流分享(3月15日)
  5. zookeeper基本操作
  6. vs2017下开发C++MFC动态库实现
  7. WEB前端面试题汇总整理01
  8. SQL Server 2005 高级程序设计 学习笔记(2)
  9. ActiveRecord.JS 与 Google Gears
  10. android studio按钮槽函数,AndroidStudio按钮Button退出程序