一、前言

各种网站的数据都是宝贵的资源,资源要体现出它的价值就要提供给用户使用,但是使用的时候,总有人想把你的数据搞走。网站为了维护自己的利益就会想各种的办法把数据保护起来。常用的手段就是限制用户访问,限制你的IP。还有的就是吧文本转化成图片或者是视频,音频,然后就算你把数据爬了过去,也用不了。
本文就教大家怎么遇处理图片-处理图片中的干扰,但是不涉及这么识别图片中的文字,如果只是想知道怎么识别文字,请参考其他相关的文章或是我后续的博客。

二、本文要用到到工具

  • Jupter notebook : Python 的浏览器IDE,神器
  • Python : Version: 3.0
  • PIL : python的pillow,图片处理库,强大到没有朋友,没有安装的童鞋请自己安装
  • matplotlib : 生成图片用的,强大到没有女朋友 ,没有安装的童鞋请自己安装

三、观察图片

如下的图片,我们需要的文字被网站的开发者裹的严严实实,不但把数据转化成了图片,而且图片上面还加了各种的干扰文字。这些开发人员我想也是被产品逼的吧。现在我们就来个大法,破了他的道。这个图片,为什么我们的眼睛能够分别出图片中的信息,肯定不是你牛,而是你的区别不同的颜色。这就是根本原因,有了这个思想我们就接着向下走。

四、撸代码

1.导入库

from PIL import Image #图片处理
import matplotlib.pyplot as plt #画表格图片

2 打开我们的备用图片,就是上面的那个货

img = Image.open("/home/tianwei/QQ图片20171222141102.png")
img = img.convert("RGB")

这个图片本身是PNG,它是四通道的图片(RGBA),为了方便处理,我们把它转化成RGB图片,看上去基本没有变化,对我们以后的文字识别没有任何的影响。

3. 分析下图片的颜色值的分布

下面的代码有点长,简要概括就是每个颜色的出现次数统计了一下,然后丢给plot画出来,便于观察,颜色出现次数很多的我过滤掉了,这样图片稍微好看一些。不想看代码的话就看后面的图片。

newImg = Image.new("RGB", img.size, (255,255,255,255))
#字典转list
def dict2list(dic:dict):keys = dic.keys()vals = dic.values()lst = [(key, val) for key, val in zip(keys, vals)]return lst
w,h = img.size
a = {}
#统计颜值出现的次数
for i in range(w):for j in range(h):r,g,b = img.getpixel((i,j))t = r*255*255 + g * 255 + bif t in a.keys():a[t] =  a[t] + 1else:a[t]  = 1
l = sorted(dict2list(a), key=lambda x:x[1], reverse=True)
dic = {}
#去掉出现次数太多的颜色,不影响我们的观察
for i in l:if(i[1] < 500):dic[i[0]] = i[1]
#下面的代码是画图用的
plt.figure(1, figsize=(20,5))
plt.scatter(dic.keys(), dic.values(), linewidth=1)
plt.legend()
plt.show()

完成以后得到如下的颜色分布图,x是颜色值,y是出现的次数,很明显的看到颜值在6000000与8000000的中间出现了一个断层,这就是我们想要的颜值分界线,太丑的点我们要把它去掉。

4 生成一个新的图片

# New 一个与原图一样大小的图片,默认用白色填充
rmg = Image.new("RGB", img.size, (255,255,255,255))
for i in range(w):for j in range(h):r,g,b = img.getpixel((i,j))t = r*255*255 + g * 255 + b#小与颜值分界线的点我们就把颜色填充到新的图片上面if(t<7000000):rmg.putpixel((i,j), (r,g,b))
rmg

大功告成的图片,一个大写的完美,请客官看图,啥也不说了

五、后记

这篇文章只是教大家怎么预处理图片,并没有教大家怎么识别图片,如果你想识别图片的话,请用百度的通用文字识别AI,溜的飞起。如果大家想知道怎么用Tensorflow的神经网络模型去训练,大家可以给我留言,我在以后的博客中教大家.

图片干扰背景处理,简单易懂相关推荐

  1. ps将图片加入背景【实测成功】

    记录: 步骤 1.先打开非背景图片: 新建图层: 将背景改为图层0: 参考 怎么使用ps给图片添加背景 PS简单的抠图方法

  2. python爬虫验证码识别 (手把手教会你验证码识别)opencv图像处理 图片处理 验证码处理 降噪 简单易懂验证码处理

    前言:验证码是个烦人的小家伙!当然有很多打码平台,可以轻松解决!但可以自己来,干嘛靠别人!有技术不学是傻儿童!今天主要讲opencv来解决验证码!抱着怀里教你!让你向前迈一大步!详细讲,慢慢看!简单易 ...

  3. css的漂亮图片背景与简单的班级成绩表 ,,,

    css简单易懂又美观的制作 1 css的背景 background-color background-image background-repeat background-position backg ...

  4. 图片放大镜详细教程(简单易懂、注释清晰明了)

    一.详细介绍 (1)放大镜的基本要领如下: 1.原图宽高比例=缩略图宽高比=放大镜的宽高比 2.大放大镜与小放大镜的倍数=原图与缩略图的倍数 3.默认两个放大镜与图片都是左上角重叠 4.原图相对于小放 ...

  5. Python实现二分查找算法,图片结合代码讲解,简单易懂

    Python实现二分查找算法,图片结合代码讲解,简单易懂 二分查找是指在一个数组中循环找到特定的目标元素的一种算法,二分查找算法要求这个数组必须是有序的,如果不是有序则最后得出的结果是不准确的,因为其 ...

  6. Python 字符串系列三字符串的拼接拆分和判断【简单易懂,代码可以直接运行,强烈推荐】

    Python 字符串系列三字符串的拼接拆分和判断[简单易懂,代码可以直接运行,强烈推荐] ''' 字符串的拼接和拆分 #拆分和拼接 在''中\是转义字符,只有\才表示一个 ''' #以文件路径为例 p ...

  7. 一、css清除浮动方法学习笔记总结(超详细,简单易懂)

    ** css清除浮动方法学习笔记总结(超详细,简单易懂) ** 问题: 上图中,由于container(父级元素)未设置高度,其内部子元素设置了float浮动,导致与container同级(也就是co ...

  8. CodeBlocks配色方案设置(简单易懂)

    CodeBlocks配色方案设置(简单易懂) 最终成品 方法 ​ 1.首先进入codeblocks官网找到colour theme代码. ​ 直接点链接: codeblock wiki 从以上截图往下 ...

  9. c语言写拼图游戏算法,[原创]拼图游戏移动算法,简单易懂

    [原创]拼图游戏移动算法,简单易懂 这是我第一次发表关于算法的贴子, 希望大家支持下 原理:判断用户点击的按扭的X或Y坐标是否与移动按扭相同, 并且移动按扭的X,Y坐标是否与用户点击按扭相邻. 拼图游 ...

  10. 【转】区块链是什么,如何简单易懂地介绍区块链?

    作者:知乎用户 链接:https://www.zhihu.com/question/37290469 来源:知乎 著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 友情提醒:比特币 ...

最新文章

  1. 如何在Java代码中去掉烦人的“!=null”
  2. 窗口最小化之后没有图标
  3. 在CentOS下安装crontab服务
  4. hdu 1528+hdu 1962(最小覆盖)
  5. 解题报告——蓝桥 试题 基础练习 矩阵乘法——27行代码AC
  6. 弹出菜单快捷键的使用方法
  7. Python爬虫工具
  8. MDK9X5开发板应用程序演示3:LM75A温度采集显示(增加存储功能)
  9. Flutter 底部导航栏实现方式
  10. 惠普服务器查询ilo信息,HP服务器在线配置ilo地址
  11. 小巧时尚的机械键盘,通吃五台设备,雷柏MT510PRO键盘体验
  12. MATLAB批量改变图片大小
  13. R语言查看对象的结构:class函数、mode函数、str函数、names函数
  14. 极光推送之java后台封装REST API
  15. 20161214_namelist.input说明
  16. Django之Cookie和 Session
  17. 基于kettle实现数据采集
  18. 国外最大的购物搜索/比较购物网站
  19. WebSocket连接wss链接
  20. 基于PreSCAN Matlab/Simulink的智能驾驶联合仿真【详细图文】

热门文章

  1. Segmentation Measures
  2. go decimal 使用方法
  3. C语言——顺序结构训练题
  4. idea切换工作目录后无法重启问题记录
  5. 王立军 - 民警维权工作
  6. 最小生成树算法之Kruskal算法
  7. 量子计算机的算力是多少,我国量子计算机实现算力全球领先
  8. 阿里云服务器Centos 6.8 64位漏洞 CVE-2017-5336 处理
  9. 进制转换: 十进制转换成其他进制(一)
  10. pat2020春季 7-2 The Judger (25分)