python如何实现读取并显示图片(不需要图形界面)


Posted in Python onJuly 08, 2020

在 python 中除了用 opencv,也可以用 matplotlib 和 PIL 这两个库操作图片。本人偏爱 matpoltlib,因为它的语法更像 matlab。

一、matplotlib

1. 显示图片

import matplotlib.pyplot as plt # plt 用于显示图片
import matplotlib.image as mpimg # mpimg 用于读取图片
import numpy as np
 
lena = mpimg.imread('lena.png') # 读取和代码处于同一目录下的 lena.png
# 此时 lena 就已经是一个 np.array 了,可以对它进行任意处理
lena.shape #(512, 512, 3)
 
plt.imshow(lena) # 显示图片
plt.axis('off') # 不显示坐标轴
plt.show()

2. 显示某个通道

# 显示图片的第一个通道
lena_1 = lena[:,:,0]
plt.imshow('lena_1')
plt.show()
# 此时会发现显示的是热量图,不是我们预想的灰度图,可以添加 cmap 参数,有如下几种添加方法:
plt.imshow('lena_1', cmap='Greys_r')
plt.show()
 
img = plt.imshow('lena_1')
img.set_cmap('gray') # 'hot' 是热量图
plt.show()

3. 将 RGB 转为灰度图

matplotlib 中没有合适的函数可以将 RGB 图转换为灰度图,可以根据公式自定义一个:

def rgb2gray(rgb):
 return np.dot(rgb[...,:3], [0.299, 0.587, 0.114])
 
gray = rgb2gray(lena) 
# 也可以用 plt.imshow(gray, cmap = plt.get_cmap('gray'))
plt.imshow(gray, cmap='Greys_r')
plt.axis('off')
plt.show()

4. 对图像进行放缩

这里要用到 scipy

from scipy import misc
lena_new_sz = misc.imresize(lena, 0.5) # 第二个参数如果是整数,则为百分比,如果是tuple,则为输出图像的尺寸
plt.imshow(lena_new_sz)
plt.axis('off')
plt.show()

5. 保存图像

5.1 保存 matplotlib 画出的图像

该方法适用于保存任何 matplotlib 画出的图像,相当于一个 screencapture。

plt.imshow(lena_new_sz)
plt.axis('off')
plt.savefig('lena_new_sz.png')

5.2 将 array 保存为图像

from scipy import misc
misc.imsave('lena_new_sz.png', lena_new_sz)

5.3 直接保存 array

读取之后还是可以按照前面显示数组的方法对图像进行显示,这种方法完全不会对图像质量造成损失

np.save('lena_new_sz', lena_new_sz) # 会在保存的名字后面自动加上.npy
img = np.load('lena_new_sz.npy') # 读取前面保存的数组

二、PIL

1. 显示图片

from PIL import Image
im = Image.open('lena.png')
im.show()

2. 将 PIL Image 图片转换为 numpy 数组

im_array = np.array(im)
# 也可以用 np.asarray(im) 区别是 np.array() 是深拷贝,np.asarray() 是浅拷贝

3. 保存 PIL 图片

直接调用 Image 类的 save 方法

from PIL import Image
I = Image.open('lena.png')
I.save('new_lena.png')

4. 将 numpy 数组转换为 PIL 图片

这里采用 matplotlib.image 读入图片数组,注意这里读入的数组是 float32 型的,范围是 0-1,而 PIL.Image 数据是 uinit8 型的,范围是0-255,所以要进行转换:

import matplotlib.image as mpimg
from PIL import Image
lena = mpimg.imread('lena.png') # 这里读入的数据是 float32 型的,范围是0-1
im = Image.fromarray(np.uinit8(lena*255))
im.show()

5. RGB 转换为灰度图

from PIL import Image
I = Image.open('lena.png')
I.show()
L = I.convert('L')
L.show()

以上就是本文的全部内容,希望对大家的学习有所帮助

到此这篇关于python如何实现读取并显示图片(不需要图形界面)的文章就介绍到这了,更多相关Python 读取并显示图片内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python中一些自然语言工具的使用的入门教程
Apr 13 Python
深入理解Python中的*重复运算符
Oct 28 Python
5分钟 Pipenv 上手指南
Dec 20 Python
python增加图像对比度的方法
Jul 12 Python
使用Python测试Ping主机IP和某端口是否开放的实例
Dec 17 Python
Python函数的返回值、匿名函数lambda、filter函数、map函数、reduce函数用法实例分析
Dec 26 Python
Django 允许局域网中的机器访问你的主机操作
May 13 Python
关于tf.matmul() 和tf.multiply() 的区别说明
Jun 18 Python
python 通过使用Yolact训练数据集
Apr 06 Python
Python入门学习之类的相关知识总结
May 25 Python
Python Pandas pandas.read_sql_query函数实例用法分析
Jun 21 Python
总结python多进程multiprocessing的相关知识
Jun 29 Python
基于python实现可视化生成二维码工具
Jul 08 #Python
如何使用Cython对python代码进行加密
Jul 08 #Python
python中的错误如何查看
Jul 08 #Python
获取python运行输出的数据并解析存为dataFrame实例
Jul 07 #Python
利用keras使用神经网络预测销量操作
Jul 07 #Python
Python Mock模块原理及使用方法详解
Jul 07 #Python
opencv 图像礼帽和图像黑帽的实现
Jul 07 #Python
You might like
浅析使用Turck-mmcache编译来加速、优化PHP代码
2013/06/20 PHP
PHP sdk文档处理常用代码示例解析
2020/12/09 PHP
javascript 实现父窗口引用弹出窗口的值的脚本
2007/08/07 Javascript
HTML DOM的nodeType值介绍
2011/03/31 Javascript
js内置对象 学习笔记
2011/08/01 Javascript
JS实现点击按钮后框架内载入不同网页的方法
2015/05/05 Javascript
基于jquery实现无限级树形菜单
2016/03/22 Javascript
关于动态执行代码(js的Eval)实例详解
2016/08/15 Javascript
使用jQuery.Pin垂直滚动时固定导航
2017/05/24 jQuery
jQuery实现表格冻结顶栏效果
2017/08/20 jQuery
使用JQ完成表格隔行换色的简单实例
2017/08/25 Javascript
Vuejs 单文件组件实例详解
2018/02/09 Javascript
Vue render渲染时间戳转时间,时间转时间戳及渲染进度条效果
2018/07/27 Javascript
vue  directive定义全局和局部指令及指令简写
2018/11/20 Javascript
详解Vue组件之作用域插槽
2018/11/22 Javascript
ES6知识点整理之模块化的应用详解
2019/04/15 Javascript
mpvue实现微信小程序快递单号查询代码
2020/04/03 Javascript
JavaScript中变量提升和函数提升的详解
2020/08/07 Javascript
[00:11]战神迅矛
2019/03/06 DOTA
Python标准库defaultdict模块使用示例
2015/04/28 Python
python实现二分查找算法
2017/09/21 Python
详解tensorflow载入数据的三种方式
2018/04/24 Python
Python3转换html到pdf的不同解决方案
2019/03/11 Python
Python基础之函数的定义与使用示例
2019/03/23 Python
Django时区详解
2019/07/24 Python
python 模拟贷款卡号生成规则过程解析
2019/08/30 Python
pytorch制作自己的LMDB数据操作示例
2019/12/18 Python
德国亚洲食品网上商店:asiafoodland.de
2019/12/28 全球购物
合伙协议书
2014/04/23 职场文书
产品生产计划书
2014/05/07 职场文书
机关作风整顿个人整改措施思想汇报
2014/09/29 职场文书
2014年企业党建工作总结
2014/12/18 职场文书
民主生活会主持词
2015/07/01 职场文书
《鲁滨逊漂流记》之六读后感(4篇)
2019/09/29 职场文书
导游词之上海杜莎夫人蜡像馆
2019/11/22 职场文书
Java如何实现通过键盘输入一个数组
2022/02/15 Java/Android