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之关于循环的小伎俩
Oct 02 Python
python使用opencv对图像mask处理的方法
Jul 05 Python
解决django 新增加用户信息出现错误的问题
Jul 28 Python
Python面向对象编程基础实例分析
Jan 17 Python
PyCharm License Activation激活码失效问题的解决方法(图文详解)
Mar 12 Python
Python库skimage绘制二值图像代码实例
Apr 10 Python
Python Socket TCP双端聊天功能实现过程详解
Jun 15 Python
详解Python高阶函数
Aug 15 Python
Python自动创建Excel并获取内容
Sep 16 Python
Pycharm安装第三方库失败解决方案
Nov 17 Python
Python制作表白爱心合集
Jan 22 Python
分享7个 Python 实战项目练习
Mar 03 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文件缓存类汇总
2014/11/21 PHP
谈谈PHP连接Access数据库的注意事项
2016/08/12 PHP
javascript 有用的脚本函数
2009/05/07 Javascript
使弱类型的语言JavaScript变强势
2009/06/22 Javascript
Tab页界面 用jQuery及Ajax技术实现(php后台)
2011/10/12 Javascript
js 链式延迟执行DOME
2012/01/04 Javascript
jquery Mobile入门—多页面切换示例学习
2013/01/08 Javascript
JSONP跨域GET请求解决Ajax跨域访问问题
2014/12/31 Javascript
javascript中caller和callee详解
2015/08/10 Javascript
微信小程序 教程之列表渲染
2016/10/18 Javascript
分析JS中this引发的bug
2017/12/12 Javascript
vue使用iframe嵌入网页的示例代码
2020/06/09 Javascript
使用Vue组件实现一个简单弹窗效果
2018/04/23 Javascript
vue上传图片到oss的方法示例(图片带有删除功能)
2018/09/27 Javascript
前端面试知识点目录一览
2019/04/15 Javascript
基于js实现逐步显示文字输出代码实例
2020/04/02 Javascript
基于python的汉字转GBK码实现代码
2012/02/19 Python
Python基类函数的重载与调用实例分析
2015/01/12 Python
python数组过滤实现方法
2015/07/27 Python
全面了解Nginx, WSGI, Flask之间的关系
2018/01/09 Python
Python定义函数功能与用法实例详解
2019/04/08 Python
在windows下使用python进行串口通讯的方法
2019/07/02 Python
基于TensorBoard中graph模块图结构分析
2020/02/15 Python
Python3 assert断言实现原理解析
2020/03/02 Python
简单几步用纯CSS3实现3D翻转效果
2019/01/17 HTML / CSS
Html5元素及基本语法详解
2016/08/02 HTML / CSS
HTML5中判断横屏竖屏的方法(移动端)
2016/08/04 HTML / CSS
Java语言程序设计测试题改错题部分
2014/07/22 面试题
应用电子专业学生的自我评价
2013/10/16 职场文书
公司晚会主持词
2014/03/22 职场文书
《傅雷家书》教学反思
2014/04/20 职场文书
特教教师先进事迹
2014/05/21 职场文书
共青团员自我评价
2015/03/10 职场文书
土建施工员岗位职责
2015/04/11 职场文书
整改通知书格式
2015/04/22 职场文书
退休欢送会致辞
2015/07/31 职场文书