python 实现图片修复(可用于去水印)
在现实的生活中,我们可能会遇到一些美好的或是珍贵的图片被噪声干扰,比如旧照片的折痕,比如镜头上的灰尘或污渍,更或者是某些我们想为我所用但有讨厌水印,那么有没有一种办法可以消除这些噪声呢?
答案是肯定的,依然是被我们用了无数次的OpenCV这款优秀的框架。
效果预览

图片修复原理
那OpenCV究竟是怎么实现的,简单的来说就是开发者标定噪声的特征,在使用噪声周围的颜色特征推理出应该修复的图片的颜色,从而实现图片修复的。
程序实现解析
标定噪声的特征,使用cv2.inRange二值化标识噪声对图片进行二值化处理,具体代码:cv2.inRange(img, np.array([240, 240, 240]), np.array([255, 255, 255])),把[240, 240, 240]~[255, 255, 255]以外的颜色处理为0; 使用OpenCV的dilate方法,扩展特征的区域,优化图片处理效果; 使用inpaint方法,把噪声的mask作为参数,推理并修复图片;完整代码
#coding=utf-8#图片修复import cv2import numpy as nppath = 'img/inpaint.png'img = cv2.imread(path)hight, width, depth = img.shape[0:3]#图片二值化处理,把[240, 240, 240]~[255, 255, 255]以外的颜色变成0thresh = 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()
以上就是python 实现图片修复(可用于去水印)的详细内容,更多关于python 图片修复的资料请关注好吧啦网其它相关文章!
相关文章:
1. Python unittest生成测试报告过程解析2. php去掉数组的第一个值的两个函数:array_shift、array_splice3. python matplotlib工具栏源码探析二之添加、删除内置工具项的案例4. CSS Hack大全-教你如何区分出IE6-IE10、FireFox、Chrome、Opera5. CSS3实例分享之多重背景的实现(Multiple backgrounds)6. Django-simple-captcha验证码包使用方法详解7. 用PHP读取和编写XML DOM8. uni-app结合PHP实现单用户登陆demo及解析9. 如何基于python3和Vue实现AES数据加密10. 解决VUE项目使用Element-ui 下拉组件的验证失效问题

网公网安备