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': ...
随机推荐
- linux sed 命
sed(stream editor):是流编辑器,按行进行操作,对符合模式的行在内存中进行操作,不对原文件进行修改,处理结束后将模式空间打印到屏幕. sed 的模式空间 处理文件流的内存空间叫模式空间 ...
- 分享知识-快乐自己:虚拟机 NET 网络配置
第一步: 第二步: 第三步: 第四步: 第五步: 第六步: 第七步: 第九步: 第十步: 第十一步: 第十二步: 第十三步: 成功. 第十四步:开启开机自启动网路连接 cd /etc/sy ...
- PHP基础陷阱题(变量赋值)
PHP基础陷阱题代码,需要的朋友可以参考下 复制代码 代码如下: <?php $a=3; $b=6; if($a=5||$b=7){ $a++; $b++; } var_dump($a, $ ...
- Oracle 11g的7个服务详解
成功安装Oracle 11g后,共有7个服务,这七个服务的含义分别为:1. Oracle ORCL VSS Writer Service:Oracle卷映射拷贝写入服务,VSS(Volume Shad ...
- hdu-5640 King's Cake (水题)
题目链接 King's Cake Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others ...
- windows下安装 postgresql
1. 下载PostgreSQL的源代码.解压. 2. 在Windows平台下编译需要跳过一个权限的检测,否则在编译的时候可能会出现错误. 在\src\backend\main\main.c文件中将 ...
- linux命令学习笔记(4):mkdir命令
linux mkdir 命令用来创建指定的名称的目录,要求创建目录的用户在当前目录中具有写权限, 并且指定的目录名不能是当前目录中已有的目录. .命令格式: mkdir [选项] 目录... .命令功 ...
- stl_slist.h
stl_slist.h // Filename: stl_slist.h // Comment By: 凝霜 // E-mail: mdl2009@vip.qq.com // Blog: http:/ ...
- p2p视频点播系统开发案例――Myseelite
项目地址:http://sourceforge.net/projects/myseelite/ 1. MySee公司倡导的开源项目,目前国内功能最强大的一个开源系统. 2. 一个直播(也支持轮播.点播 ...
- HihoCoder1665方块游戏([Offer收割]编程练习赛40)(线段树)
时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 小Ho在玩一款类似俄罗斯方块的游戏.与原版俄罗斯方块不同的是,落下方块都是长度不一的横向长条,并且不能移动也不能变成竖直方 ...