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 相关文章推荐
关于你不想知道的所有Python3 unicode特性
Nov 28 Python
实例解析Python设计模式编程之桥接模式的运用
Mar 02 Python
利用Python获取赶集网招聘信息前篇
Apr 18 Python
Python 2与Python 3版本和编码的对比
Feb 14 Python
matplotlib中legend位置调整解析
Dec 19 Python
解决已经安装requests,却依然提示No module named requests问题
May 18 Python
解决python matplotlib imshow无法显示的问题
May 24 Python
Python OpenCV处理图像之滤镜和图像运算
Jul 10 Python
python 阶乘累加和的实例
Feb 01 Python
django 通过URL访问上传的文件方法
Jul 28 Python
在keras里实现自定义上采样层
Jun 28 Python
Python实现简繁体转换
Jun 07 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
PHP4实际应用经验篇(4)
2006/10/09 PHP
PHP中常用的转义函数
2014/02/28 PHP
重新认识php array_merge函数
2014/08/31 PHP
php字符串截取函数用法分析
2014/11/25 PHP
php求一个网段开始与结束IP地址的方法
2015/07/09 PHP
php类的自动加载操作实例详解
2016/09/28 PHP
PHP实现链表的定义与反转功能示例
2018/06/09 PHP
JQuery Tips(2) 关于$()包装集你不知道的
2009/12/14 Javascript
json-lib出现There is a cycle in the hierarchy解决办法
2010/02/24 Javascript
JS调试必备的5个debug技巧
2014/03/07 Javascript
jquery+easeing实现仿flash的载入动画
2015/03/10 Javascript
使用vue-cli(vue脚手架)快速搭建项目的方法
2018/05/21 Javascript
微信小程序module.exports模块化操作实例浅析
2018/12/20 Javascript
借助云开发实现小程序短信验证码的发送
2020/01/06 Javascript
Python for Informatics 第11章 正则表达式(一)
2016/04/21 Python
Python解惑之整数比较详解
2017/04/24 Python
python执行使用shell命令方法分享
2017/11/08 Python
Python中捕获键盘的方式详解
2019/03/28 Python
Python3.5基础之NumPy模块的使用图文与实例详解
2019/04/24 Python
Python浮点数四舍五入问题的分析与解决方法
2019/11/19 Python
什么是事务?事务有哪些性质?
2012/03/11 面试题
高级技校毕业生自荐信
2013/11/18 职场文书
《云雀的心愿》教学反思
2014/02/25 职场文书
电子商务系毕业生自荐信
2014/05/29 职场文书
永远跟党走演讲稿
2014/09/12 职场文书
党员四风自我剖析材料思想汇报
2014/09/13 职场文书
如何写贫困证明申请书
2014/10/29 职场文书
2014幼儿园家长工作总结
2014/11/10 职场文书
放弃继承权公证书
2015/01/23 职场文书
2015年社区环境卫生工作总结
2015/04/21 职场文书
师范生教育见习总结
2015/06/23 职场文书
政协常委会议主持词
2015/07/03 职场文书
爱岗敬业先进典型事迹材料(2016推荐版)
2016/02/26 职场文书
python opencv旋转图片的使用方法
2021/06/04 Python
灵能百分百第三季什么时候来?
2022/03/15 日漫
《吸血鬼幸存者》新内容发布 追加多个全新模式
2022/04/07 其他游戏