python与机器学习(一)图片相关操作

你可以利用 PIL (Python Imaging Library, 图像处理类库)进行图像操作,比如图像缩放、裁剪、旋转、颜色转换等。

Matplotlib 是一个绘图库,具有比 PIL 更强大的绘图功能,Matplotlib 中的 PyLab 接口包含很多方便用户创建图像的函数。

实验 1 读取图片

利用 PIL 中的 Python 模块读取一张图片,然后讲其转换成灰度图像,并使其显示。

# 引入实验需要的库
from PIL import Image
from pylab import imshow

# 设置在jupyter notebook中以内联的形式显示 matplotlib 绘制的图片(显示更美观)
%matplotlib inline

# 使用 Image.open(path) 读取你电脑中的一张图片
path = 'untitled.png'  # 需要打开的图片的路径
pil_im = Image.open(path)

# 使用 convert('L') 方法将其转换为灰度图像,
pil_im_l = pil_im.convert('L')

# 显示经过处理后的灰度图片
imshow(pil_im_l, cmap='gray')

输出图片

实验 2 对图像的简单处理

使用 PIL 中的 thumbnail() 方法可以很方便的创建图像的缩略图,它接受一个指定生成缩略图大小的二元元组。

你需要创建一个缩略图,并使其显示; 然后使用 crop() 方法从一副图像中裁剪指定区域,再将裁减的区域使用 transpose() 方法选择 180 度,最后用 paste() 方法将旋转后的区域放回原图并使其显示。

旋转 180 度时,可能要用到 Image.ROTATE_180 这一预定义常量,你也可以使用 resize, rotate 方法完成这个实验。

pil_im.thumbnail((32, 32))
imshow(pil_im)

在这里插入图片描述

# thubmnail(), paste() 等方法会直接修改对象本身,在进行下面的操作之前,需要重新获取图片
pil_im = Image.open(path)


box = (100, 100, 500, 500) 	# box 为一个代表(左,上,右,下)的四元组
region = pil_im.crop(box) 	# 进行裁剪
region = region.transpose(Image.ROTATE_180)
imshow(region)


pil_im.paste(region)
imshow(pil_im)

注意左上角

实验 3 图像轮廓和直方图

图像用 NumPy 数组表示后,我们可以对它们执行任意数学操作。

因为绘制轮廓需要对每个坐标[x, y]的像素值施加同一个阈值,所以首先要将图像灰度化:
灰度化
分布

实验 4 灰度变换

在这个实验中,你需要先将图像读入 NumPy 数组(可参考实验 3),然后构造不少于一个映射,将 0…255 区间(或者 0…1 区间)映射到自身(即输出区间范围和输入区间范围相同)。

# 灰度变换举例
figure()
imshow(im)

# 例子:颜色反转
im2 = 255 - im 

figure()
imshow(im2)

在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值