Python中读取,显示,保存图片的方法
一 opencv
import cv2 as cv
# load
img = cv.imread(imagepath)
# shape=(height, width, channel)
h,w,c = img.shape
# show
cv.imshow('window_title', img)
# save
cv.imwrite(savepath, img)
二 matplotlib
import matplotlib.pyplot as plt # plt 用于显示图片
import matplotlib.image as mpimg # mpimg 用于读取图片
import numpy as np # load
img = mpimg.imread('dog.jpg')
# 此时 img 就已经是一个 np.array 了,可以对它进行任意处理
# height, width, channel=(360, 480, 3)
h,w,c = img.shape # show
plt.imshow(img) # 显示图片
plt.axis('off') # 不显示坐标轴
plt.show() # save
# 适用于保存任何 matplotlib 画出的图像,相当于一个 screencapture
plt.savefig('fig_dog.png')
注:
(1)plt.imshow(image)中的图片的数据类型可以使np.array类型
imshow()函数格式为:matplotlib.pyplot.imshow(X, cmap=None)
X: 要绘制的图像或数组。
cmap: 颜色图谱(colormap), 默认绘制为RGB(A)颜色空间。
其它可选的颜色图谱如下列表:
| 颜色图谱 | 描述 |
|---|---|
| autumn | 红-橙-黄 |
| bone | 黑-白,x线 |
| cool | 青-洋红 |
| copper | 黑-铜 |
| flag | 红-白-蓝-黑 |
| gray | 黑-白 |
| hot | 黑-红-黄-白 |
| hsv | hsv颜色空间, 红-黄-绿-青-蓝-洋红-红 |
| inferno | 黑-红-黄 |
| jet | 蓝-青-黄-红 |
| magma | 黑-红-白 |
| pink | 黑-粉-白 |
| plasma | 绿-红-黄 |
| prism | 红-黄-绿-蓝-紫-...-绿模式 |
| spring | 洋红-黄 |
| summer | 绿-黄 |
| viridis | 蓝-绿-黄 |
| winter | 蓝-绿 |
用的比较多的有gray,jet等,如:
plt.imshow(image,plt.cm.gray) plt.imshow(img,cmap=plt.cm.jet)
(2)mpimg 既提供了加载图像函数imread,又提供了保存图像函数imsave
(3) plt.savefig函数 可以将显示在fig中图像保存下来
延伸:图像缩放显示
from scipy import misc
lena_new_sz = misc.imresize(img, 0.5) # 第二个参数如果是整数,则为百分比,如果是tuple,则为输出图像的尺寸
plt.imshow(img_new_sz)
plt.axis('off')
plt.show()
三 PIL
PIL加载显示图像有两种方法:
其一:调用操作系统自带的图片浏览器来打开图片
from PIL import Image
# load
im = Image.open('cat.jpg') # show
im.show() """
# 返回 image's size w,h = (480, 360)
w,h = img.size # PIL.JpegImagePlugin.JpegImageFile
type(img) # 直接调用Image类的save方法
img.save('new_cat.png')
"""
其二:让程序来绘制图片
from PIL import Image
import matplotlib.pyplot as plt
img=Image.open('/home/wanghao/Pictures/001.jpg')
plt.figure("head")
plt.imshow(img)
plt.show()
总结一些绘制和显示图片常用的一些函数:
| 函数名 | 功能 | 调用格式 |
| figure | 创建一个显示窗口 | plt.figure(num=1,figsize=(8,8) |
| imshow | 绘制图片 | plt.imshow(image) |
| show | 显示窗口 | plt.show() |
| subplot | 划分子图 | plt.subplot(2,2,1) |
| title | 设置子图标题(与subplot结合使用) | plt.title('origin image') |
| axis | 是否显示坐标尺 | plt.axis('off') |
| subplots | 创建带有多个子图的窗口 | fig,axes=plt.subplots(2,2,figsize=(8,8)) |
| ravel | 为每个子图设置变量 | ax0,ax1,ax2,ax3=axes.ravel() |
| set_title | 设置子图标题(与axes结合使用) | ax0.set_title('first window') |
| tight_layout | 自动调整子图显示布局 | plt.tight_layout() |
参考:https://blog.csdn.net/u010472607/article/details/78855816
Python中读取,显示,保存图片的方法的更多相关文章
- Python中读取csv文件内容方法
gg 224@126.com 85 男 dd 123@126.com 52 女 fgf 125@126.com 23 女 csv文件内容如上图,首先导入csv包,调用csv中的方法reader()创建 ...
- Python3实现从文件中读取指定行的方法
from:http://www.jb51.net/article/66580.htm 这篇文章主要介绍了Python3实现从文件中读取指定行的方法,涉及Python中linecache模块操作文件的使 ...
- python中文件操作的其他方法
前面介绍过Python中文件操作的一般方法,包括打开,写入,关闭.本文中介绍下python中关于文件操作的其他比较常用的一些方法. 首先创建一个文件poems: p=open('poems','r', ...
- Python中optionParser模块的使用方法[转]
本文以实例形式较为详尽的讲述了Python中optionParser模块的使用方法,对于深入学习Python有很好的借鉴价值.分享给大家供大家参考之用.具体分析如下: 一般来说,Python中有两个内 ...
- 在Python中操作文件之truncate()方法的使用教程
在Python中操作文件之truncate()方法的使用教程 这篇文章主要介绍了在Python中操作文件之truncate()方法的使用教程,是Python入门学习中的基础知识,需要的朋友可以参考下 ...
- php中读取大文件实现方法详解
php中读取大文件实现方法详解 来源: 时间:2013-09-05 19:27:01 阅读数:6186 分享到:0 [导读] 本文章来给各位同学介绍php中读取大文件实现方法详解吧,有需要了解 ...
- Python中防止sql注入的方法详解
SQL注入是比较常见的网络攻击方式之一,它不是利用操作系统的BUG来实现攻击,而是针对程序员编程时的疏忽,通过SQL语句,实现无帐号登录,甚至篡改数据库.下面这篇文章主要给大家介绍了关于Python中 ...
- Markdown中实时显示数学公式的方法
Markdown中实时显示数学公式的方法 Markdown非常好用,但是对于数学公式的实时显示有一些缺陷,如何解决这一问题呢? 一.在线LaTex编辑 点击在线LaTeX编辑方式 在对话框中输入数学公 ...
- python中的字典内置方法小结
#!/usr/local/bin/python3 # -*- coding:utf-8 -*- #key-value #dict 无序,无下标,不需要下标,因为有key stu={ 'stu001': ...
随机推荐
- Storm bolt重复消费问题解决
最近碰到一个storm的坑, 两个bolt都需要从kafkaSpout中获取数据进行各自的业务处理, bolt1的处理是幂等的, bolt2的处理是非幂等的, 上线后发现非幂等的bolt处理总是会处理 ...
- 备份/还原MySQL数据库----MySQL Workbench
点击[Data Export],界面右侧将显示数据导出窗口. 2 点击[Refresh]按钮,刷新数据库列表(1),选择要导出的数据表(2),设置导出的目录(3),点击[Start Export]按钮 ...
- php 微信公众平台开发之微信群发信息
这篇文章主要为大家详细介绍了php微信公众平台开发之微信群发信息,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 1.目的 完成在微信公众号中群发消息.这里只是完成简单的文字发送.也可以发送语音图片 ...
- Hibernate学习---第八节:继承关系的映射配置
1.单表继承 (1).实体类,代码如下: package learn.hibernate.bean; import java.util.Date; /** * 持久化类设计 * 注意: * 持久化类通 ...
- 使用SQL脚本创建数据库,操作主键、外键与各种约束(MS SQL Server)
在实际开发中,可能很少人会手写sql脚本来操作数据库的种种.特别是微软的MS SQL Server数据库,它的SQL Server Management Studio对数据库的图形化操作极致简便,从而 ...
- Netty组件理解(转载)
转载的文章,写的非常好. 一.先纵览一下Netty,看看Netty都有哪些组件? 为了更好的理解和进一步深入Netty,我们先总体认识一下Netty用到的组件及它们在整个Netty架 ...
- linux命令学习笔记(10):cat 命令
cat命令的用途是连接文件或标准输入并打印.这个命令常用来显示文件内容,或者将几个文件连接起来显示, 或者从标准输入读取内容并显示,它常与重定向符号配合使用. .命令格式: cat [选项] [文件] ...
- ACdream1430SETI(后缀自动机)
问题: Amateur astronomers Tom and Bob try to find radio broadcasts of extraterrestrial civilizations i ...
- 冷备手工完全恢复(recover database,recover tablespace,recover datafile)
冷备手工完全恢复 1. 手工完全恢复三种级别: recover database: 所有或大部分datafile丢失,一般是在mount状态完成.recover tablespace: 非关 ...
- http之pragma
关于Pragma:no-cache,跟Cache-Control: no-cache相同.Pragma: no-cache兼容http 1.0 ,Cache-Control: no-cache是htt ...