字符识别--图像的读取与数据扩充

图像读取

1、Pillow(python图像处理库(Python Imaging Library),简称:PIL):参考

用途
  • 图像档案
    python图像库是图像存档和批处理应用程序的理想选择。可以使用该库创建缩略图、在文件格式之间转换、打印图像等
  • 图像显示
    当前版本(7.0.0)包括tk PhotoImage 和BitmapImage接口,以及Windows DIB interface,他可以与pythonwin和其他基于windows的工具包一起使用
    对于调试,还有一个show()方法将图像保存在磁盘,并调用外部显示实用程序
  • 图像处理
    该库中包含了基本的图像处理模块,包括点操作、实用一组内置卷积核进行过滤以及颜色空间转换,还支持图像大小调整、旋转和任意放射变换;有一种柱状图方法可以让你从图像中提取一些统计数据,这可以用于自动增强对比度,并用于全局统计分析。
读取图像

python 图像库中最重要的类就是Image类,在具有相同名称的模块中定义。可以通过多种方式创建这个类的实例:从文件中加载图像、处理其他图像或从头创建图像。
从文件中加载图像,需要使用Image模块中的open()方法:

from PIL import Image
image = Image.open('./dataset/mchar_train/000000.png')

若成功,该函数返回Image对象,可以使用实例属性检查文件内容:

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


这个 format 属性标识图像的源。如果图像不是从文件中读取的,则将其设置为“无”。大小属性是包含宽度和高度(以像素为单位)的2元组。这个 mode 属性定义图像中带区的编号和名称,以及像素类型和深度。常用模式有灰度图像的“L”(亮度)、真彩色图像的“RGB”和预压图像的“CMYK”。
如果无法打开这个文件,便会引发IOError异常
这样有了Image类,可以使用该类定义的方法来处理和操作图像。

几何变换

PIL.Image类中包含的方法resize():重置图像大小,参数为一元组。rotate():图像以逆时针多少度进行旋转
重置图像大小

out = image.resize((128,128))
print(out.size)
out

旋转:

out = image.rotate(45)
out

要将图像旋转90度,可以使用rotate()方法或transpose()方法。后者还可以用于围绕其水平或垂直轴翻转图像
一种更通用的图像转换形式可以通过 transform() 方法

颜色空间变换

使用convert()方法
颜色空间的转换:

image.convert('L')

该库支持各种模式与‘L’(灰度)和‘rgb’模式之间的转换。要在其他模式之间转换,需要使用中间图像(通常是‘rgb’图像)

图像增强

1、过滤器
ImageFilter模块中包含许多预定义的图像过滤器,可用不filter()方法

from PIL import ImageFilter
image.filter(ImageFilter.CONTOUR)

2、点操作
这个 point() 方法可用于转换图像的像素值(例如图像对比度操作)。在大多数情况下,需要一个参数的函数对象可以传递给这个方法。每个像素都根据该功能进行处理:

image.point(lambda i:i *5)

3、增强
对于更高级的图像增强,可以使用ImageEnhance模块。从图像创建增强对象快速尝试不同的设置
可通过此方法来调整对比度、亮度、颜色平衡和清晰度
(增加对比度)

from PIL import ImageEnhance
enh = ImageEnhance.Contrast(image)
enh.enhance(3)

图像保存
image.save('./save_image.jpg','jpeg')

当然,pillow还有很多功能,暂时我们就介绍到这里。其他功能可具体查看参考链接

猜你喜欢

转载自www.cnblogs.com/whiteBear/p/12940303.html