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基于phantomjs实现导入图片
May 13 Python
python实现可视化动态CPU性能监控
Jun 21 Python
Python 字符串转换为整形和浮点类型的方法
Jul 17 Python
python文字和unicode/ascll相互转换函数及简单加密解密实现代码
Aug 12 Python
解决python多行注释引发缩进错误的问题
Aug 23 Python
python操作cfg配置文件方式
Dec 22 Python
python图形开发GUI库pyqt5的详细使用方法及各控件的属性与方法
Feb 14 Python
django admin 根据choice字段选择的不同来显示不同的页面方式
May 13 Python
Python configparser模块操作代码实例
Jun 08 Python
如何通过安装HomeBrew来安装Python3
Dec 23 Python
利用python为PostgreSQL的表自动添加分区
Jan 18 Python
Python批量将csv文件转化成xml文件的实例
May 10 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生成带有雪花背景的验证码
2006/10/09 PHP
用PHP实现将GB编码转换为UTF8
2006/11/25 PHP
PHP中数组合并的两种方法及区别介绍
2012/09/14 PHP
php导入模块文件分享
2015/03/17 PHP
JavaScript中扩展Array contains方法实例
2020/08/23 Javascript
js实现可控制左右方向的无缝滚动效果
2016/05/29 Javascript
js中动态创建json,动态为json添加属性、属性值的实例
2016/12/02 Javascript
基于JavaScript实现移动端无限加载分页
2017/03/27 Javascript
详解基于webpack和vue.js搭建开发环境
2017/04/05 Javascript
微信小程序实现页面跳转传值的方法
2017/10/12 Javascript
JS实现图片居中悬浮效果
2017/12/25 Javascript
[57:16]2014 DOTA2华西杯精英邀请赛 5 25 LGD VS VG第二场
2014/05/26 DOTA
[01:00:44]DOTA2上海特级锦标赛主赛事日 - 3 败者组第三轮#1COL VS Alliance第三局
2016/03/04 DOTA
python文件与目录操作实例详解
2016/02/22 Python
Python中Iterator迭代器的使用杂谈
2016/06/20 Python
Python脚本实现自动将数据库备份到 Dropbox
2017/02/06 Python
python matlibplot绘制多条曲线图
2021/02/19 Python
python selenium 弹出框处理的实现
2019/02/26 Python
详解Django将秒转换为xx天xx时xx分
2019/09/27 Python
通过实例解析Python文件操作实现步骤
2020/09/21 Python
东南亚旅游平台:The Trip Guru
2018/01/01 全球购物
Wojas罗马尼亚网站:波兰皮鞋品牌
2018/11/01 全球购物
Ejb技术面试题
2015/04/29 面试题
医学生实习自荐信
2013/10/01 职场文书
英语硕士生求职简历的自我评价
2013/10/15 职场文书
测绘工程个人的自我评价
2013/11/10 职场文书
委托证明的格式
2014/01/10 职场文书
优秀辅导员事迹材料
2014/02/16 职场文书
初一学生期末评语
2014/04/24 职场文书
听课评语大全
2014/04/30 职场文书
银行金融服务方案
2014/06/11 职场文书
银行竞聘报告范文
2014/11/06 职场文书
给客户的感谢信
2015/01/21 职场文书
公司回复函格式
2015/07/14 职场文书
2016年大学迎新晚会工作总结
2015/10/15 职场文书
2019银行员工个人工作自我鉴定
2019/06/27 职场文书