Python PIL模块学习和一个有趣的图识别

PIL

PIL:Python Imaging Library。这是python支持图像处理相对来说比较好的一个模块。

PIL的安装

centos:

yum install python -devel 

yum install libjpeg libjpeg-devel zlib zlib-devel freetype freetype-devel lcms lcms-devel

yum install python-imaging

Debian/Ubuntu Linux:

sudo apt-get install python-imaging

yum install python-imaging

实在不行:sudo easy_install PIL

windows/mac : pip install pillow

PIL简单的使用方法:

from PIL import Image

# 读取当前图片

im = Image.open('test.jpg')

# 查看该图片

im.show()

# 将图片进行逆时针旋转

im.rotate(90).show()    # 如果是将图片进行顺时针旋转,改为im.rotate(-90).show()即可

# 保存图像为gif格式

im.save("save.gif","GIF")

#resize成128*128像素大小

test_im=im.resize((128,128))

# 更改坐标,参数分别是 left, upper, right, lower

position = (100, 100, 400, 400)

region = im.crop(position)

# 获取图片基本信息

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

# 等比例缩放

size = 128, 128

im.thumbnail(size,Image.ANTIALIAS)

# 图像左右转换

im.transpose(Image.FLIP_LEFT_RIGHT)

# 图像上下转换

im.transpose(Image.FLIP_TOP_BOTTOM)

# 图像类型转换

im.convert("RGBA")

# 通道分离,分为三个图像对象

r, g, b = im.split()

print r, g, b

#

#

#

# 能分离就能合并,将b,r两个通道进行翻转。

im = Image.merge("RGB", (b, g, r))

有趣的图识别(图为大耳朵图图)图片地址

py代码:

from PILimport Image

import requests

import os

#根据url下载到当前目录的image目录下

def url_download(img_url,img_name):

os.makedirs('./image/', exist_ok=True)

img = requests.get(img_url)

img_url ='./image/'+ img_name+'.jpg'

    with open(img_url,'wb')as img_file:

img_file.write(img.content)

return img_url,img_name

char_type=list('''@B%8&WM#*oahkbdpqwmZO0QLCJUYXzcvunxrjft/\|()1{}[]?-_+~<>i!lI;:,、"^`'.''')

#灰度映射到字符

def chars(r,g,b,alpha=256):

grey=int(0.2126*r+0.7152*g+0.0722*b)

block = (256.0+1)/len(char_type)

return char_type[int(grey/block)]

#最终得到图像的灰度txt

def get_pic_item(width=39,height=25):

img_url,img_name=url_download('https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1554912005678&di=8233802413bfc61713e05468bb5a88c4&imgtype=0&src=http%3A%2F%2Fb-ssl.duitang.com%2Fuploads%2Fitem%2F201711%2F22%2F20171122165316_v8fym.jpeg','tutu')

img=Image.open(img_url)

img=img.resize((width,height),Image.NEAREST)

item=''

    for iin range(height):

for jin range(width):

item+=chars(*img.getpixel((j,i)))

item+='\n'

    item_url='./image/'+img_name+'.txt'

    with open(item_url,'w')as f:

f.write(item)

if __name__=='__main__':

#执行函数

    get_pic_item()


要处理的图片

处理后截图:


处理后的txt文件截图

小功告成了!!!!

你可能感兴趣的:(Python PIL模块学习和一个有趣的图识别)