python读取和保存图片的方式

方式1:利用PIL的image函数

利用image读取的图片并不是array格式,其实是图片的类-PIL.JpegImagePlugin.JpegImageFile

需要用 np.asarray(im) 或者 np.array(im)函数将其处理成array格式。这两者的区别其实是深拷贝与浅拷贝的区别。

from PIL import Image 
import numpy as np 
image = Image.open('./himalaya.jpg') 
img = np.array(image)
image.save('save.jpg') 还可以指定图片保存的质量img.save('new1.jpg',quality=95),默认值为75
print("图片的形状",img.shape)  #图片的形状 高*宽*通道数 (171, 256, 3)

方式2:利用 OpenCV的Python 接口

cv2.imread() 读出来同样是 array 形式的(高,宽,通道数)

import cv2
#读取图片
img = cv2.imread('./himalaya.jpg')
#读取之后的形状
h,w,c = img.shape
#读取之后图片的显示
cv2.imshow('window_title', img)
cv2.waitKey(5000) #设置图片的延迟时间,否则会一闪而过
#图片的保存
cv2.imwrite('save.jpg',img)

方式3:利用 matplotlib

利用 matplotlib.pyplot as plt 用于显示图片;

利用matplotlib.image as mpimg 用于读取图片,并且读取出来也是 array 格式。

import matplotlib.pyplot as plt
import matplotlib.image as mpimg
import numpy as np
#读取图片
img = mpimg.imread('./himalaya.jpg')
#图片的形状
print(img.shape)
#图片的显示,但需要后面跟着plt.show()才可以显示出来
plt.imshow(img) 
plt.axis('off') #不显示坐标轴
plt.show()
#保存图片
plt.savefig('save.jpg')

方式4:利用Scipy

读出来是 array 形式,并且按照(H,W,C)形式保存。

import scipy.misc
import matplotlib.pyplot as plt
#读取图片
img = scipy.misc.imread('./himalaya.jpg')
#保存图片
scipy.misc.imsave('./himalaya.jpg',img)
#图片显示
plt.imshow(img)
plt.show()
#读取的也是array格式,三通道(H,W,C)
print(img.shape)

 

 

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值