Python---Image图像处理

python处理图像

将图片转换为向量

所需的库:
在python3的环境之下,PIL库改名为为pillow

conda install pillow
from PIL import Image
import numpy as np

导入本地图片,img为临时存储对象

img = Image.open(path)

因为有些图片读取后不止gbk三个通道,所以我们可以先运行一次下面的代码,查看各通道

print(img.split())
(<PIL.Image.Image image mode=L size=84x225 at 0x10278C50>, 
<PIL.Image.Image image mode=L size=84x225 at 0x102E1F28>, 
<PIL.Image.Image image mode=L size=84x225 at 0x102F3550>, 
<PIL.Image.Image image mode=L size=84x225 at 0x102F3A20>)

表明该图具有四个通道,每个通道的size为84x225
获取每个通道

g,b,k,d = img.split()

每个通道 g,b,k,d可单独输出显示其通道下的图像,
注: 笔者发现虽然获得的是四个通道,但第四个通道下得到的为空
使用numpy获取每个通道下的向量矩阵

np.array(g).reshape(1,84*225)[0]
np.array(b).reshape(1,84*225)[0]
np.array(k).reshape(1,84*225)[0]

注: 有时候上述np.array(g)的方法不能够顺利完成转换,会报错误:

TypeError: int() argument must be a string, a bytes-like object or a number, not 'Image'

可转而使用下列方式进行转换

img = Image.open("/home/lw/a.jpg")
img.show() 
img = np.array(img)      # image类 转 numpy
vec= img[:,:,0]        #第1通道
one=Image.fromarray(vec) # numpy 转 image类
one.show()

至此完成图片至向量的转换

图像的几何变换

Image类有resize()、rotate()和transpose()方法进行几何变换。
1、图像的缩放和旋转

dst = img.resize((128, 128))  # 改变图片的像素大小
dst = img.rotate(45) # 顺时针角度表示

2、转换图像

dst = im.transpose(Image.FLIP_LEFT_RIGHT) #左右互换
dst = im.transpose(Image.FLIP_TOP_BOTTOM) #上下互换
dst = im.transpose(Image.ROTATE_90)  #顺时针旋转
dst = im.transpose(Image.ROTATE_180)
dst = im.transpose(Image.ROTATE_270)

#	transpose()和rotate()没有性能差别。

3、图片平移

image = cv2.imread(image_path)
img_info = image.shape
height = img_info[0]
width = img_info[1]
mat_trans = np.float32([[1, 0, 20], [0, 1, 30]])
# [[1,0,20],[0,1,30]]   表示平移变换:其中20表示水平方向右的平移距离,30表示竖直方向下的平移距离。
# [[1,0,-20],[0,1,-30]]   表示平移变换:其中-20表示水平方向左的平移距离,-30表示竖直方向上的平移距离。
dst = cv2.warpAffine(image, mat_trans, (width, height))  # 变换函数
cv2.imwrite(save_path, dst)

向量与图片的转换

以cifar10为例,每张图片的向量矩阵为(32,32,3)

# img.shape = (32,32,3)
# img 保存的是其中一个样本的向量矩阵
img = Image.fromarray(img.astype('uint8')).convert('RGB')
plt.imshow(img) # 打印该图片
# 或者
img = Image.open("/home/lw/a.jpg")
img.show() # 会打开电脑的图片查看器显示图片
img = np.array(img)      # image类 转 numpy
img =Image.fromarray(img ) # numpy 转 image类
img .show()

另可参考博客:
python处理图片
PIL官方
Python图像库PIL的类Image及其方法介绍

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值