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 相关文章推荐
python3设计模式之简单工厂模式
Oct 17 Python
Python实现进程同步和通信的方法
Jan 02 Python
python2.7 json 转换日期的处理的示例
Mar 07 Python
Python实现正弦信号的时域波形和频谱图示例【基于matplotlib】
May 04 Python
Linux下python制作名片示例
Jul 20 Python
python 标准差计算的实现(std)
Jul 29 Python
获取python运行输出的数据并解析存为dataFrame实例
Jul 07 Python
Python 实现3种回归模型(Linear Regression,Lasso,Ridge)的示例
Oct 15 Python
Python读写csv文件流程及异常解决
Oct 20 Python
Python 制作自动化翻译工具
Apr 25 Python
Python开发之QT解决无边框界面拖动卡屏问题(附带源码)
May 27 Python
python 详解turtle画爱心代码
Feb 15 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 更新数据库中断的解决方法
2009/06/05 PHP
PHP 的ArrayAccess接口 像数组一样来访问你的PHP对象
2010/10/12 PHP
Thinkphp5行为使用方法汇总
2017/12/21 PHP
PHP基于DateTime类解决Unix时间戳与日期互转问题【针对1970年前及2038年后时间戳】
2018/06/13 PHP
使用PHP反射机制来构造"CREATE TABLE"的sql语句
2019/03/21 PHP
laravel 中某一字段自增、自减的例子
2019/10/11 PHP
javascript 图片上一张下一张链接效果代码
2010/03/12 Javascript
javascript之AJAX框架使用说明
2010/04/24 Javascript
JQuery在光标位置插入内容的实现代码
2010/06/18 Javascript
JavaScript中的style.cssText使用教程
2014/11/06 Javascript
jQuery中wrapInner()方法用法实例
2015/01/16 Javascript
AngularJs页面筛选标签小功能
2016/08/01 Javascript
canvas实现环形进度条效果
2017/03/23 Javascript
基于Require.js使用方法(总结)
2017/10/26 Javascript
JS实现图片居中悬浮效果
2017/12/25 Javascript
解决vue单页路由跳转后scrollTop的问题
2018/09/03 Javascript
详解Vue源码之数据的代理访问
2018/12/11 Javascript
Js逆向实现滑动验证码图片还原的示例代码
2020/03/10 Javascript
[01:05:41]EG vs Optic Supermajor 败者组 BO3 第二场 6.6
2018/06/07 DOTA
浅谈Python NLP入门教程
2017/12/25 Python
python多线程之事件Event的使用详解
2018/04/27 Python
python实现对csv文件的列的内容读取
2018/07/04 Python
Python爬虫实现抓取京东店铺信息及下载图片功能示例
2018/08/07 Python
在Python中通过getattr获取对象引用的方法
2019/01/21 Python
Python下利用BeautifulSoup解析HTML的实现
2020/01/17 Python
PyQt5实现仿QQ贴边隐藏功能的实例代码
2020/05/24 Python
弄清Pytorch显存的分配机制
2020/12/10 Python
Java中compareTo和compare的区别
2016/04/12 面试题
校园新闻广播稿
2014/01/10 职场文书
大学生村官事迹材料
2014/01/21 职场文书
2014年五四青年节演讲比赛方案
2014/04/22 职场文书
人力资源管理专业自荐书
2014/07/07 职场文书
张丽莉观后感
2015/06/16 职场文书
利用Selenium添加cookie实现自动登录的示例代码(fofa)
2021/05/08 Python
解析CSS 提取图片主题色功能(小技巧)
2021/05/12 HTML / CSS
python必学知识之文件操作(建议收藏)
2021/05/30 Python