数据读取与数据扩增方法

本文介绍了Python中图像数据的读取方法,包括matplotlib、PIL、OpenCV、skimage和imageio,并探讨了数据扩增的重要性,列举了如翻转、旋转、裁剪等常用数据扩增技术。此外,还提到了torchvision、imgaug和albumentations等数据扩增库,并展示了Pytorch中数据读取和扩增的应用。
摘要由CSDN通过智能技术生成

↑↑↑关注后"星标"Datawhale

每日干货 & 每月组队学习,不错过

 Datawhale干货 

作者:樊亮、黄星源、Datawhale优秀学习者

本文对图像数据读取及图像数据扩增方法进行了总结,并以阿里天池零基础入门CV赛事为实践,利用Pytorch对数据进行了读取和扩增讲解。

完整实践:100行代码入手天池CV赛事(精简教程)

数据及背景

https://tianchi.aliyun.com/competition/entrance/531795/introduction(阿里天池-零基础入门CV赛事)

数据读取方法

接下来将简单介绍五种目前较为主流的Python图像库的基本使用方法:matplotlib、PIL(pillow)、OpenCV、skimage、imageio。

1. matplotlib

matplotlib是Python的绘图库,与numpy一起使用可以算是一种matlab开源替代方案,在科学绘图领域被广泛使用。当然,用来读取图像自然不在话下。

使用plt.imread()读取图片将其储存为一个RGB像素值矩阵,再进行处理。故其可以与opencv或pillow结合使用,只需要传入像素值矩阵,matplotlib便可以接手处理接下来想要完成的操作。

import matplotlib.pyplot as plt #导入matplotlib库
import numpy as np #导入numpy库


img = plt.imread('PicPath/PicName.jpg') # 读取图片
print(img.shape) # 输出(高度h,宽度w,通道数c)
print(img.size) # 输出像素总数目
print(img.dtype) # 输出图片类型,uint8为[0-255]
print(img) # 输出所有像素的RGB值,一个像素RGB为[0-255 0-255 0-255]
plt.imshow(img) # 将图片img插入画布
plt.axis('off') # 坐标轴刻度不显示
plt.show() # 展示画布


imgR = image[:,:,0]  # R通道,热量图
plt.imshow(imgR) # 将热量图插入画布
plt.show() # 展示画布


plt.imshow(imgR,cmap='Greys_r') # 将灰度图插入画布
plt.show() # 展示画布


figure = plt.figure(figsize=(80,40)) # 调整显示画布宽80,高40/英寸
img1 = plt.imread('PicPath/PicName1.jpg') # 读取图片1
img2 = plt.imread('PicPath/PicName2.jpg') # 读取图片2


plt.axis("off") # 画布坐标轴刻度不显示
ax = figure.add_subplot(121) # 画布以1行2列的形式显示,设置图片定位为序列1
plt.axis('off') # 子图1坐标轴刻度不显示
ax.imshow(img1) # 将图片1插入子图1
ax.set_title('title1')  # 给子图1加标题
ax = figure.add_subplot(122) # 画布以1行2列的形式显示,设置图片定位为序列2
plt.axis('off') # 子图2坐标轴刻度不显示
ax.imshow(img2) # 将图片2插入子图2
ax.set_title('title2') # 给子图2加标题
plt.savefig('PicX.jpg') # 保存画布命名为PicX.jpg
plt.show() # 展示画布

2. PIL(pillow)

PIL即Python Imaging Library,而pillow是PIL的一个分支。pillow提供了常见的图像读取和处理的操作,它比opencv更为轻巧,且可以与ipython notebook无缝集成。

使用Image.open()读取图片储存为一个对象,并非是numpy矩阵。

from PIL import Image # 导入PIL库
import numpy as np # 导入numpy库


img = Image.open('PicPath/PicName.jpg') # 读取图片
imgL = Image.open('PicName.jpg').convert('L') # 读取图片灰度图
imgL.show() # 展示灰度图
img1 = img.copy() # 复制图片
print(img.format) # 输出图片格式
print(img.size) # 输出图片(宽度w,高度h)
print(img.mode) # 输出图片类型,L为灰度图,RGB为真彩色,RGBA为RGB+Alpha透明度
im.show() # 展示画布


imgData = np.array(img) # 将对象img转化为RGB像素值矩阵
print(imgData.shape) # 输出图片(宽度w,高度h,通道c)
print(img
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值