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 xml解析实例详解
Nov 14 Python
python 性能优化方法小结
Mar 31 Python
python3 图片referer防盗链的实现方法
Mar 12 Python
Python用61行代码实现图片像素化的示例代码
Dec 10 Python
Python读取指定日期邮件的实例
Feb 01 Python
python使用thrift教程的方法示例
Mar 21 Python
python基于gevent实现并发下载器代码实例
Nov 01 Python
Python如何使用正则表达式爬取京东商品信息
Jun 01 Python
python爬虫多次请求超时的几种重试方法(6种)
Dec 01 Python
python unichr函数知识点总结
Dec 16 Python
Python matplotlib绘制条形统计图 处理多个实验多组观测值
Apr 21 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
PHP使用者状态管理功能的应用
2006/10/09 PHP
php入门学习知识点七 PHP函数的基本应用
2011/07/14 PHP
如何使用php输出时间格式
2013/08/31 PHP
CodeIgniter分页类pagination使用方法示例
2016/03/28 PHP
微信小程序发送订阅消息的方法(php 为例)
2019/10/30 PHP
JS array 数组详解
2009/03/22 Javascript
不用构造函数(Constructor)new关键字也能实现JavaScript的面向对象
2013/01/11 Javascript
jquery实现简单的拖拽效果实例兼容所有主流浏览器
2013/06/21 Javascript
jquery自定义函数的多种方法
2014/01/09 Javascript
高性能JavaScript 重排与重绘(2)
2015/08/11 Javascript
jQuery+HTML5加入购物车代码分享
2020/10/29 Javascript
学习使用bootstrap基本控件(table、form、button)
2016/04/12 Javascript
表格展示利器 Bootstrap Table实例代码
2017/09/06 Javascript
Node实战之不同环境下配置文件使用教程
2018/01/02 Javascript
ng-alain表单使用方式详解
2018/07/10 Javascript
jQuery实现可编辑的表格
2019/12/11 jQuery
javascript中layim之查找好友查找群组
2021/02/06 Javascript
python使用os模块的os.walk遍历文件夹示例
2014/01/27 Python
python统计文本文件内单词数量的方法
2015/05/30 Python
python友情链接检查方法
2015/07/08 Python
Python数据类型详解(三)元祖:tuple
2016/05/08 Python
python基础while循环及if判断的实例讲解
2017/08/25 Python
django中media媒体路径设置的步骤
2019/11/15 Python
python的range和linspace使用详解
2019/11/27 Python
python实现加密的方式总结
2020/01/19 Python
Python GUI库PyQt5图形和特效样式QSS介绍
2020/02/25 Python
详解Anaconda 的安装教程
2020/09/23 Python
印度购物网站:TATA CLiQ
2017/11/23 全球购物
Audible英国:有声读物,30天免费试用
2019/10/16 全球购物
北大研究生linux应用求职信
2013/10/29 职场文书
花店创业计划书范文
2014/02/07 职场文书
员工试用期考核自我鉴定
2014/04/13 职场文书
关于感恩的演讲稿200字
2014/08/26 职场文书
《观潮》教学反思
2016/02/17 职场文书
Python爬虫基础讲解之请求
2021/05/13 Python
Pytorch GPU内存占用很高,但是利用率很低如何解决
2021/06/01 Python