字符识别--图像的读取与数据扩充
Posted whitebear
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了字符识别--图像的读取与数据扩充相关的知识,希望对你有一定的参考价值。
图像读取
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还有很多功能,暂时我们就介绍到这里。其他功能可具体查看参考链接
以上是关于字符识别--图像的读取与数据扩充的主要内容,如果未能解决你的问题,请参考以下文章