图片干扰背景处理,简单易懂

一、前言

各种网站的数据都是宝贵的资源,资源要体现出它的价值就要提供给用户使用,但是使用的时候,总有人想把你的数据搞走。网站为了维护自己的利益就会想各种的办法把数据保护起来。常用的手段就是限制用户访问,限制你的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 + b
        if t in a.keys():
            a[t] =  a[t] + 1
        else:
            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
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 我可以为您提供一些有关如何编写Python图片文字识别程序的建议:1)使用Python图像处理库(如OpenCV)来读取和调整图像;2)使用Python自然语言处理库(如NLTK)来识别文字;3)使用深度学习技术(如CNN)来提取图像中的文字特征;4)使用机器学习技术(如SVM)来识别文字类别。 ### 回答2: 编写Python图片文字识别程序可以使用开源库Tesseract。以下是使用Tesseract进行图片文字识别的基本步骤: 1. 安装Tesseract:在终端中运行"pip install pytesseract"来安装pytesseract库。此外,还需从Tesseract官方网站下载并安装Tesseract OCR引擎。 2. 导入需要的库:在Python程序中导入必要的库,例如cv2(用于处理图像)、pytesseract(用于进行文字识别)等。 3. 读取图片:使用cv2库中的imread()函数读取图片,并将其转换为灰度图像以方便后续处理。 4. 图像预处理:对图像进行预处理操作,例如二值化、降噪等,以提高识别的准确度。 5. 调用Tesseract进行文字识别:使用pytesseract库中的image_to_string()函数,将预处理后的图像作为输入,得到识别出的文字。 6. 输出识别结果:将识别出的文字输出到控制台或保存到文件中,以便后续使用。 7. 清理临时文件:完成文字识别后,应删除生成的临时文件,以避免占用额外的存储空间。 需要注意的是,文字识别的准确性受多种因素影响,例如图像质量、文字颜色、字体等。在实际应用中,可能需要针对特定的场景进行相应的优化和调整,以提高识别的准确性。 ### 回答3: Python图片文字识别程序编写可以使用第三方库tesseract来实现。以下是一个简单的示例代码: ```python import pytesseract from PIL import Image # 打开图像文件 image = Image.open('example.png') # 图片文字识别 text = pytesseract.image_to_string(image) # 输出结果 print(text) ``` 在上面的代码中,首先需要使用`pytesseract`库来进行图片文字识别。然后使用`PIL`库的`Image`模块打开待识别的图像文件。接下来,调用`image_to_string`函数来将图像中的文字转换成文本。最后,将识别结果进行输出。 在运行代码之前,需要先安装`tesseract` OCR引擎,并将其加入系统环境变量。此外,还需要安装`pytesseract`和`PIL`库。可以使用以下命令进行安装: ```bash pip install pytesseract pip install pillow ``` 需要注意的是,该程序的准确性和效果可能会受到图像质量、文字字体、背景干扰等因素的影响。所以对于不同的图片,可能需要进行一些预处理的操作,比如图像增强、二值化、去噪等,以提高文字识别的准确率。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值