python读取和保存图片5种方法对比


Posted in Python onSeptember 12, 2018

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 形式,并且按照(H,W,C)形式保存

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
img=data.lena()
io.imshow(img)

关于存储方式主要用两种:

当对象是图片时,使用 object.save(path)函数

当对象时二维数组时,使用 misc.imsave(path,object)函数

python读取图片的5种方法使用非常简单,大家可以在自己机器上测试一下

Python 相关文章推荐
Python中if __name__ == "__main__"详细解释
Oct 21 Python
Python安装pycurl失败的解决方法
Oct 15 Python
在Pycharm terminal中字体大小设置的方法
Jan 16 Python
selenium+python自动化测试之环境搭建
Jan 23 Python
Django 简单实现分页与搜索功能的示例代码
Nov 07 Python
Python 中@property的用法详解
Jan 15 Python
windows、linux下打包Python3程序详细方法
Mar 17 Python
python爬虫容易学吗
Jun 02 Python
Python unittest生成测试报告过程解析
Sep 08 Python
python 如何获取页面所有a标签下href的值
May 06 Python
Python使用海龟绘图实现贪吃蛇游戏
Jun 18 Python
Python语言规范之Pylint的详细用法
Jun 24 Python
python3 拼接字符串的7种方法
Sep 12 #Python
python简单操作excle的方法
Sep 12 #Python
使用python实现快速搭建简易的FTP服务器
Sep 12 #Python
python ftp 按目录结构上传下载的实现代码
Sep 12 #Python
python3结合openpyxl库实现excel操作的实例代码
Sep 11 #Python
python创建文件备份的脚本
Sep 11 #Python
python实现飞机大战
Sep 11 #Python
You might like
PHP 多维数组排序(usort,uasort)
2010/06/30 PHP
关于Zend Studio 配色方案插件的介绍
2013/06/24 PHP
php实现的返回数据格式化类实例
2014/09/22 PHP
php实现通用的信用卡验证类
2015/03/24 PHP
Laravel中任务调度console使用方法小结
2017/05/07 PHP
php判断电子邮件是否正确方法
2018/12/04 PHP
PHP常见加密函数用法示例【crypt与md5】
2019/01/27 PHP
打开超链需要“确认”对话框的方法
2007/03/08 Javascript
jQueryUI Datepicker组件设置日期高亮
2016/10/13 Javascript
微信小程序对接七牛云存储的方法
2017/07/30 Javascript
js封装成插件的步骤方法
2017/09/11 Javascript
Vue2 配置 Axios api 接口调用文件的方法
2017/11/13 Javascript
vue刷新和tab切换实例
2018/02/11 Javascript
浅谈Koa2框架利用CORS完成跨域ajax请求
2018/03/06 Javascript
angularjs结合html5实现拖拽功能
2018/06/25 Javascript
对Vue table 动态表格td可编辑的方法详解
2018/08/28 Javascript
JavaScript展开操作符(Spread operator)详解
2019/07/20 Javascript
vue-router结合vuex实现用户权限控制功能
2019/11/14 Javascript
iview实现图片上传功能
2020/06/29 Javascript
微信小程序向Java后台传输参数的方法实现
2020/12/10 Javascript
OpenCV2.3.1+Python2.7.3+Numpy等的配置解析
2018/01/05 Python
Pandas 数据框增、删、改、查、去重、抽样基本操作方法
2018/04/12 Python
python3实现猜数字游戏
2020/12/07 Python
python 中值滤波,椒盐去噪,图片增强实例
2019/12/18 Python
pytorch nn.Conv2d()中的padding以及输出大小方式
2020/01/10 Python
Django中的AutoField字段使用
2020/05/18 Python
英国家电直销:Appliances Direct
2016/09/22 全球购物
Hotels.com加拿大:领先的在线住宿网站
2018/10/05 全球购物
递归计算如下递归函数的值(斐波拉契)
2012/02/04 面试题
求职简历自荐信范文
2013/10/21 职场文书
实习生自荐信范文
2013/11/13 职场文书
护士求职自荐信范文
2014/03/19 职场文书
财务人员担保书
2014/05/13 职场文书
群众路线教师自我剖析材料
2014/09/29 职场文书
2015年乡镇流动人口工作总结
2015/05/12 职场文书
2015国庆66周年宣传语
2015/07/14 职场文书