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安装PIL模块时Unable to find vcvarsall.bat错误的解决方法
Sep 19 Python
python实现扫描ip地址的小程序
Apr 16 Python
Python3.5字符串常用操作实例详解
May 01 Python
Python爬取爱奇艺电影信息代码实例
Nov 26 Python
pytorch 修改预训练model实例
Jan 18 Python
python通过对字典的排序,对json字段进行排序的实例
Feb 27 Python
TensorFlow tf.nn.softmax_cross_entropy_with_logits的用法
Apr 19 Python
解决windows上安装tensorflow时报错,“DLL load failed: 找不到指定的模块”的问题
May 20 Python
Python pandas对excel的操作实现示例
Jul 21 Python
python smtplib发送多个email联系人的实现
Oct 09 Python
python之随机数函数的实现示例
Dec 30 Python
Python中22个万用公式的小结
Jul 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
某大型网络公司应聘时的笔试题目附答案
2008/03/27 PHP
javascript innerText和innerHtml应用
2010/01/28 Javascript
Jquery替换已存在于element上的event的方法
2010/03/09 Javascript
jQuery切换网页皮肤并保存到Cookie示例代码
2014/06/16 Javascript
jquery trigger伪造a标签的click事件取代window.open方法
2014/06/23 Javascript
JavaScript继承基础讲解(原型链、借用构造函数、混合模式、原型式继承、寄生式继承、寄生组合式继承)
2014/08/16 Javascript
JQuery中使用.each()遍历元素学习笔记
2014/11/08 Javascript
卸载安装Node.js与npm过程详解
2016/08/15 Javascript
nodeJS删除文件方法示例
2016/12/25 NodeJs
Angular2使用Angular CLI快速搭建工程(一)
2017/05/21 Javascript
Angular4实现动态添加删除表单输入框功能
2017/08/11 Javascript
基于jQuery实现的单行公告活动轮播效果
2017/08/23 jQuery
echarts实现地图定时切换散点与多图表级联联动详解
2018/08/07 Javascript
element-ui中select组件绑定值改变,触发change事件方法
2018/08/24 Javascript
详解webpack 热更新优化
2018/09/13 Javascript
layui table表格数据的新增,修改,删除,查询,双击获取行数据方式
2019/11/14 Javascript
webpack常用配置总览(小结)
2019/11/18 Javascript
微信小程序如何实现radio单选框单击打勾和取消
2020/01/21 Javascript
2款Python内存检测工具介绍和使用方法
2014/06/01 Python
Python基于sftp及rsa密匙实现远程拷贝文件的方法
2016/09/21 Python
Python中几种导入模块的方式总结
2017/04/27 Python
Python PyAutoGUI模块控制鼠标和键盘实现自动化任务详解
2018/09/04 Python
pandas 对日期类型数据的处理方法详解
2019/08/08 Python
详解Django CAS 解决方案
2019/10/30 Python
python实现超市商品销售管理系统
2019/11/22 Python
Python numpy.zero() 初始化矩阵实例
2019/11/27 Python
Shoes For Crews法国官网:美国领先的防滑鞋设计和制造商
2018/01/01 全球购物
The North Face北面荷兰官网:美国著名户外品牌
2019/10/16 全球购物
4s客服专员岗位职责
2013/12/01 职场文书
尽职尽责村干部自我鉴定
2014/01/23 职场文书
党风廉政承诺书
2014/03/27 职场文书
2014年绿化工作总结
2014/12/09 职场文书
《中国古代诗歌散文欣赏》高中语文教材
2019/08/20 职场文书
CSS Transition通过改变Height实现展开收起元素
2021/08/07 HTML / CSS
详解jQuery的核心函数和事件处理
2022/02/18 jQuery
win10电脑右下角输入法图标不见了?Win10右下角不显示输入法的解决方法
2022/07/23 数码科技