杭州建设实名制报备网站,盐城z做网站,网站开发如何无感更新,韩国风格网站模板python读取和保存图片5种方法对比
python中对象之间的赋值是按引用传递的#xff0c;如果需要拷贝对象#xff0c;需要用到标准库中的copy模块
方法一#xff1a;利用 PIL 中的 Image 函数
这个函数读取出来不是 array 格式#xff0c;这时候需要用 np.asarray(im) 或者 np…python读取和保存图片5种方法对比
python中对象之间的赋值是按引用传递的如果需要拷贝对象需要用到标准库中的copy模块
方法一利用 PIL 中的 Image 函数
这个函数读取出来不是 array 格式这时候需要用 np.asarray(im) 或者 np.array函数 。
区别np.array() 是深拷贝np.asarray() 是浅拷贝
copy.copy 浅拷贝 只拷贝父对象不会拷贝对象的内部的子对象。
copy.deepcopy 深拷贝 拷贝对象及其子对象
例子
import copy
a [1, 2, 3, 4, [a, b]] #原始对象
b a #赋值传对象的引用
c copy.copy(a) #对象拷贝浅拷贝
d copy.deepcopy(a) #对象拷贝深拷贝
a.append(5) #修改对象a
a[4].append(c) #修改对象a中的[a, b]数组对象
print a , a
print b , b
print c , c
print d , d
输出结果
a [1, 2, 3, 4, [a, b, c], 5]
b [1, 2, 3, 4, [a, b, c], 5]
c [1, 2, 3, 4, [a, b, c]]
d [1, 2, 3, 4, [a, b]]
需要好好理解一下深拷贝和浅拷贝
from PIL import Image
import numpy as np
I Image.open(./cc_1.png)
I.show()
I.save(./save.png)
I_array np.array(I)
print I_array.shape
方法二利用 matplotlib
利用 matplotlib.pyplot as plt 用于显示图片
matplotlib.image as mpimg 用于读取图片
并且读取出来就是 array 格式
import matplotlib.pyplot as plt
import matplotlib.image as mpimg
import numpy as np
I mpimg.imread(./cc_1.png)
print I.shape
plt.imshow(I)
方法三利用 OpenCV-Python 接口
cv2.imread() 读出来同样是 array 形式但是如果是单通道的图读出来的是三通道的。
import cv2
I cv2.imread(./cc_1.png)
print I.shape
方法四图像处理库 Scipy
图像的存取笔者一般喜欢用 scipy 这个库里的东西
读出来是 array 形式并且按照HWC形式保存
import matplotlib.pyplot as plt
from scipy import misc
import scipy
I misc.imread(./cc_1.png)
scipy.misc.imsave(./save1.png, I)
plt.imshow(I)
plt.show()
方法五用 skimage 库
from skimage import io,data
imgdata.lena()
io.imshow(img)
关于存储方式主要用两种
当对象是图片时使用 object.save(path)函数
当对象时二维数组时使用 misc.imsave(path,object)函数
python读取图片的5种方法使用非常简单大家可以在自己机器上测试一下