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代码做configure文件
Jul 20 Python
python爬虫headers设置后无效的解决方法
Oct 21 Python
Python基于socket模块实现UDP通信功能示例
Apr 10 Python
Scrapy使用的基本流程与实例讲解
Oct 21 Python
python使用pandas处理大数据节省内存技巧(推荐)
May 05 Python
Python 20行简单实现有道在线翻译的详解
May 15 Python
对PyQt5中的菜单栏和工具栏实例详解
Jun 20 Python
详解python和matlab的优势与区别
Jun 28 Python
Pytorch卷积层手动初始化权值的实例
Aug 17 Python
Python 生成一个从0到n个数字的列表4种方法小结
Nov 28 Python
关于python pycharm中输出的内容不全的解决办法
Jan 10 Python
python删除某个目录文件夹的方法
May 26 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实现异步调用方法研究与分享
2011/10/27 PHP
浅析application/x-www-form-urlencoded和multipart/form-data的区别
2014/06/22 PHP
PHP生成网站桌面快捷方式代码分享
2014/10/11 PHP
PHP中的魔术方法总结和使用实例
2015/05/11 PHP
PHP实现将MySQL重复ID二维数组重组为三维数组的方法
2016/08/01 PHP
js实现运行代码需要刷新的解决方法
2007/08/18 Javascript
深入解析contentWindow, contentDocument
2013/07/04 Javascript
Jquery仿淘宝京东多条件筛选可自行结合ajax加载示例
2013/08/28 Javascript
JavaScript sort数组排序方法和自我实现排序方法小结
2016/06/06 Javascript
基于d3.js实现实时刷新的折线图
2016/08/03 Javascript
jQuery实现文章图片弹出放大效果
2017/04/06 jQuery
基于JavaScript实现的希尔排序算法分析
2017/04/14 Javascript
微信小程序 选项卡的简单实例
2017/05/24 Javascript
js学习心得_一个简单的动画库封装tween.js
2017/07/14 Javascript
angularjs实现table增加tr的方法
2018/02/27 Javascript
React 无状态组件(Stateless Component) 与高阶组件
2018/08/14 Javascript
ExtJs使用自定义插件动态保存表头配置(隐藏或显示)
2018/09/25 Javascript
vue实现固定位置显示功能
2019/05/30 Javascript
JavaScript this关键字指向常用情况解析
2020/09/02 Javascript
关于angular 8.1使用过程中的一些记录
2020/11/25 Javascript
最大K个数问题的Python版解法总结
2016/06/16 Python
详解Python之数据序列化(json、pickle、shelve)
2017/03/30 Python
Pyinstaller 打包exe教程及问题解决
2019/08/16 Python
使用批处理脚本自动生成并上传NuGet包(操作方法)
2019/11/19 Python
Python打包工具PyInstaller的安装与pycharm配置支持PyInstaller详细方法
2020/02/27 Python
python实现输入三角形边长自动作图求面积案例
2020/04/12 Python
Python venv虚拟环境配置过程解析
2020/07/08 Python
The Hut美国/加拿大:英国领先的豪华在线百货商店
2019/03/26 全球购物
Dr. Martens马汀博士法国官网:马丁靴鼻祖
2020/01/15 全球购物
岗位竞聘书范文
2014/03/31 职场文书
投标承诺函范文
2015/01/21 职场文书
大学军训口号大全
2015/12/24 职场文书
简历上的自我评价,该怎么写呢?
2019/06/13 职场文书
励志语录:时光飞逝,请学会珍惜所有的人和事
2020/01/16 职场文书
Python 多线程之threading 模块的使用
2021/04/14 Python
Python加密技术之RSA加密解密的实现
2022/04/08 Python