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中turtle作图示例
Nov 15 Python
Python生成任意范围任意精度的随机数方法
Apr 09 Python
Numpy之文件存取的示例代码
Aug 03 Python
Python实现的特征提取操作示例
Dec 03 Python
pytorch permute维度转换方法
Dec 14 Python
Python绘图Matplotlib之坐标轴及刻度总结
Jun 28 Python
Python StringIO如何在内存中读写str
Jan 07 Python
使用python无账号无限制获取企查查信息的实例代码
Apr 17 Python
python中sklearn的pipeline模块实例详解
May 21 Python
浅析Python迭代器的高级用法
Jul 16 Python
提取视频中的音频 Python只需要三行代码!
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
为什么夜间收到的中波电台比白天多
2021/03/01 无线电
PHP 文件上传源码分析(RFC1867)
2009/10/30 PHP
php获取QQ头像并显示的方法
2014/12/23 PHP
浅谈PHP发送HTTP请求的几种方式
2017/07/25 PHP
PHP SPL 被遗落的宝石【SPL应用浅析】
2018/04/20 PHP
文本框中禁止非数字字符输入比如手机号码、邮编
2013/08/19 Javascript
多种方法实现360浏览器下禁止自动填写用户名密码
2014/06/16 Javascript
JavaScript基本语法讲解
2015/06/03 Javascript
javascript中的五种基本数据类型
2015/08/26 Javascript
jQuery validate+artdialog+jquery form实现弹出表单思路详解
2016/04/18 Javascript
js获取页面及个元素高度、宽度的代码
2016/04/26 Javascript
xmlplus组件设计系列之按钮(2)
2017/04/26 Javascript
JQuery 封装 Ajax 常用方法(推荐)
2017/05/21 jQuery
详解Vuex中mapState的具体用法
2017/09/28 Javascript
vue实现百度下拉列表交互操作示例
2019/03/12 Javascript
使用vue完成微信公众号网页小记(推荐)
2019/04/28 Javascript
vue用elementui写form表单时,在label里添加空格操作
2020/08/13 Javascript
vue使用svg文件补充-svg放大缩小操作(使用d3.js)
2020/09/22 Javascript
Python压缩解压缩zip文件及破解zip文件密码的方法
2015/11/04 Python
Python 在字符串中加入变量的实例讲解
2018/05/02 Python
使用python验证代理ip是否可用的实现方法
2018/07/25 Python
Python OpenCV对本地视频文件进行分帧保存的实例
2019/01/08 Python
python 判断矩阵中每行非零个数的方法
2019/01/26 Python
Python 2/3下处理cjk编码的zip文件的方法
2019/04/26 Python
PyCharm安装Markdown插件的两种方法
2019/06/24 Python
python简单鼠标自动点击某区域的实例
2019/06/25 Python
CSS3标注引用的出处和来源的方法
2020/02/25 HTML / CSS
canvas进阶之如何画出平滑的曲线
2018/10/15 HTML / CSS
你的自行车健身专家:FaFit24
2016/11/16 全球购物
介绍一下except的用法和作用
2015/01/22 面试题
中专毕业个人的自荐信格式
2013/09/21 职场文书
2015年高考寄语或鼓励的话
2015/03/23 职场文书
电影建党伟业观后感
2015/06/01 职场文书
人民的好儿女观后感
2015/06/18 职场文书
2016暑期社会实践心得体会范文
2016/01/14 职场文书
2016年先进教师个人事迹材料
2016/02/26 职场文书