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爬虫教程之爬取百度贴吧并下载的示例
Mar 07 Python
python实现的一个火车票转让信息采集器
Jul 09 Python
利用Python-iGraph如何绘制贴吧/微博的好友关系图详解
Nov 02 Python
python使用pil库实现图片合成实例代码
Jan 20 Python
Pandas聚合运算和分组运算的实现示例
Oct 17 Python
python实现在一个画布上画多个子图
Jan 19 Python
浅谈python 调用open()打开文件时路径出错的原因
Jun 05 Python
python绘制趋势图的示例
Sep 17 Python
Selenium环境变量配置(火狐浏览器)及验证实现
Dec 07 Python
Python图片检索之以图搜图
May 31 Python
yolov5返回坐标的方法实例
Mar 17 Python
python 使用tkinter与messagebox写界面和弹窗
Mar 20 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
thinkphp 一个页面使用2次分页的实现方法
2013/07/15 PHP
PHP中的日期加减方法示例
2014/08/21 PHP
php中ob_flush函数和flush函数用法分析
2015/03/18 PHP
php文件读取方法实例分析
2015/06/20 PHP
js特效,页面下雪的小例子
2013/06/17 Javascript
jquery通过visible来判断标签是否显示或隐藏
2014/05/08 Javascript
js仿黑客帝国字母掉落效果代码分享
2020/11/08 Javascript
AngularJS中run方法的巧妙运用
2017/01/04 Javascript
Vue中添加过渡效果的方法
2017/03/16 Javascript
vue子组件使用自定义事件向父组件传递数据
2017/05/27 Javascript
JS动态插入脚本和插入引用外部链接脚本的方法
2018/05/21 Javascript
如何自动化部署项目?折腾服务器之旅~
2019/04/16 Javascript
vue-cli基础配置及webpack配置修改的完整步骤
2019/10/20 Javascript
微信小程序getLocation 需要在app.json中声明permission字段
2020/03/03 Javascript
[01:46]DOTA2上海特锦赛小组赛英文解说KotlGuy采访
2016/02/27 DOTA
[00:10]DOTA2全国高校联赛 以DOTA2会友
2018/05/30 DOTA
简单介绍Ruby中的CGI编程
2015/04/10 Python
详解Python中最难理解的点-装饰器
2017/04/03 Python
python文件特定行插入和替换实例详解
2017/07/12 Python
python与C互相调用的方法详解
2017/07/14 Python
python图片二值化提高识别率代码实例
2019/08/24 Python
Python插入Elasticsearch操作方法解析
2020/01/19 Python
如何解决安装python3.6.1失败
2020/07/01 Python
html5+css3气泡组件的实现
2014/11/21 HTML / CSS
在HTML5 canvas里用卷积核进行图像处理的方法
2018/05/02 HTML / CSS
爱尔兰旅游网站:ebookers.ie
2020/01/24 全球购物
安全生产先进个人材料
2014/02/06 职场文书
给学校建议书范文
2014/05/13 职场文书
党支部活动策划方案
2014/08/18 职场文书
领导干部保密承诺书
2014/08/30 职场文书
家长会主持词开场白
2015/05/29 职场文书
高中语文教学反思范文
2016/02/16 职场文书
音乐课《小猫钓鱼》教学反思
2016/02/18 职场文书
SQL Server连接查询的实用教程
2021/04/07 SQL Server
CSS3实现的水平标题菜单
2021/04/14 HTML / CSS
MySQL索引失效的典型案例
2021/06/05 MySQL