将图片转化为文本的一种实现方法

本文介绍一种将图片转化为文本的实现方法

在很多时候,我们需要把图片转化成文本,然后再进一步处理。比如,在网站登录时候,可能会遇到需要输入验证码,如何让程序能够自动识别验证码并进行登录验证?

其中一种方法就是可以将验证码的图片进行下载,然后将图片转化成一种文本,再利用一些机器学习的算法将文本进行内容处理,得到图片中的内容。

下面以下图为例,将图片中的“123”转化为文本存储。
这里写图片描述

使用到的Python模块包为:Pillow(PIL)
Pillow是Python的一个图像处理库,常用用法如下:

Image类
Pillow中最重要的类就是Image,该类存在于同名的模块中。可以通过以下几种方式实例化:从文件中读取图片,处理其他图片得到,或者直接创建一个图片。

使用Image模块中的open函数打开一张图片:

from PIL import Image
im=Image.open('123.jpg')

如果打开成功,返回一个Image对象,可以通过对象属性检查文件内容:

print(im.format, im.size, im.mode)

PPM (512, 512) RGB

format属性定义了图像的格式,如果图像不是从文件打开的,那么该属性值为None;size属性是一个tuple,表示图像的宽和高(单位为像素);mode属性为表示图像的模式,常用的模式为:L为灰度图,RGB为真彩色,CMYK为pre-press图像。
如果文件不能打开,则抛出IOError异常。

当有一个Image对象时,可以用Image类的各个方法进行处理和操作图像,例如显示图片:

im.show()

读写图片
Pillow库支持相当多的图片格式。直接使用Image模块中的open()函数读取图片,而不必先处理图片的格式,Pillow库自动根据文件决定格式。
Image模块中的save()函数可以保存图片,除非你指定文件格式,那么文件名中的扩展名用来指定文件格式。
如:将图片保存为”123_new.png”

im.save('123_new.png')

获取图片尺寸

im.size  #返回结果为二元元组(width,height)

获取图片像素颜色

im.getpixel((a,b)) #a,b分别代表width和height,返回结果为三元元组,GRB格式颜色,如:白色(255,255,255) ,黑色(0,0,0)

重置图片大小

new=im.resize((a,b)) #a,b为新设置的图片大小
new.save('new.png')

代码示例

#导入Image方法
from PIL import Image
#打开图片
im=Image.open('123.jpg')
#获取图片宽和高
width=im.size[0]
height=im.size[1]

#将图片转化为文本,在每个像素点处用数字和空白字符替换
fh=open('123.txt','w')
for i in range(height):
    for j in range(width):
        #获取(j,i)像素点颜色
        col=im.getpixel((j,i))
        colsum=col[0]+col[1]+col[2]
        if(colsum==0):
            #黑色
            fh.write('1')#在黑色像素点处用数字1代替
        else:
            fh.write(' ')#在非黑色像素点处用空格代替
    fh.write('\n')
fh.close()

处理结果
这里写图片描述

猜你喜欢

转载自blog.csdn.net/d1240673769/article/details/77150964