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 相关文章推荐
简单的Apache+FastCGI+Django配置指南
Jul 22 Python
python获取代理IP的实例分享
May 07 Python
Python实现iOS自动化打包详解步骤
Oct 03 Python
Python编程中flask的简介与简单使用
Dec 28 Python
Python3.5 Pandas模块之Series用法实例分析
Apr 23 Python
pytorch实现用Resnet提取特征并保存为txt文件的方法
Aug 20 Python
python多线程同步之文件读写控制
Feb 25 Python
屏蔽Django admin界面添加按钮的操作
Mar 11 Python
python简单的三元一次方程求解实例
Apr 02 Python
如何清空python的变量
Jul 05 Python
基于Python 的语音重采样函数解析
Jul 06 Python
Python实现LR1文法的完整实例代码
Oct 25 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
我的论坛源代码(一)
2006/10/09 PHP
PHP查询网站的PR值
2013/10/30 PHP
php rsa加密解密使用详解
2015/01/14 PHP
YII Framework框架教程之安全方案详解
2016/03/14 PHP
深入解析PHP的Yii框架中的缓存功能
2016/03/29 PHP
2017年最新PHP经典面试题目汇总(上篇)
2017/03/17 PHP
JQuery1.6 使用方法三
2011/11/23 Javascript
JavaScript基础篇(6)之函数表达式闭包
2015/12/11 Javascript
Node.js的项目构建工具Grunt的安装与配置教程
2016/05/12 Javascript
js从数组中删除指定值(不是指定位置)的元素实现代码
2016/09/13 Javascript
Bootstrap CSS组件之面包屑导航(breadcrumb)
2016/12/17 Javascript
BootStrap学习笔记之nav导航栏和面包屑导航
2017/01/03 Javascript
AngularJs每天学习之总体介绍
2017/08/07 Javascript
angular1配合gulp和bower的使用教程
2018/01/19 Javascript
vue实现商品加减计算总价的实例代码
2018/08/12 Javascript
跟老齐学Python之通过Python连接数据库
2014/10/28 Python
详解python中的文件与目录操作
2017/07/11 Python
详解python里使用正则表达式的全匹配功能
2017/10/19 Python
TensorFlow搭建神经网络最佳实践
2018/03/09 Python
PyQt+socket实现远程操作服务器的方法示例
2019/08/22 Python
详解Python中namedtuple的使用
2020/04/27 Python
Matlab使用Plot函数实现数据动态显示方法总结
2021/02/25 Python
介绍一下linux的文件系统
2015/10/06 面试题
MYSQL支持事务吗
2013/08/09 面试题
php优化查询foreach代码实例讲解
2021/03/24 PHP
内刊编辑求职自荐书范文
2014/02/19 职场文书
欢迎横幅标语
2014/06/17 职场文书
船舶工程技术专业求职信
2014/08/07 职场文书
消防志愿者活动方案
2014/08/23 职场文书
联谊活动总结
2014/08/28 职场文书
领导干部遵守党的政治纪律情况思想汇报
2014/09/14 职场文书
校园环保广播稿(3篇)
2014/09/15 职场文书
2014领导班子正风肃纪思想汇报
2014/09/18 职场文书
师德师风培训感言
2015/08/03 职场文书
python glom模块的使用简介
2021/04/13 Python
java开发双人五子棋游戏
2022/05/06 Java/Android