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 23 Python
python分析nignx访问日志脚本分享
Feb 26 Python
Python序列循环移位的3种方法推荐
Apr 09 Python
Python2.7 实现引入自己写的类方法
Apr 29 Python
使用python 3实现发送邮件功能
Jun 15 Python
tensorflow 加载部分变量的实例讲解
Jul 27 Python
Python 实现异步调用函数的示例讲解
Oct 14 Python
PyQt5使用QTimer实现电子时钟
Jul 29 Python
对tensorflow中的strides参数使用详解
Jan 04 Python
通过python实现windows桌面截图代码实例
Jan 17 Python
将labelme格式数据转化为标准的coco数据集格式方式
Feb 17 Python
Django高并发负载均衡实现原理详解
Apr 04 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+mysql实现无限级分类 | 树型显示分类关系
2006/11/19 PHP
php根据日期判断星座的函数分享
2014/02/13 PHP
php检测iis环境是否支持htaccess的方法
2014/02/18 PHP
php 使用array函数实现分页
2015/02/13 PHP
php使用substr()和strpos()联合查找字符串中某一特定字符的方法
2015/05/12 PHP
Yii2.0 模态弹出框+ajax提交表单
2016/05/22 PHP
PHP二维数组去重实例分析
2016/11/18 PHP
PHP封装的分页类与简单用法示例
2019/02/25 PHP
laravel中的fillable和guarded属性详解
2019/10/23 PHP
jquery 操作DOM案例代码分享
2012/04/05 Javascript
浅析jQuery EasyUI中的tree使用指南
2014/12/18 Javascript
jQuery处理图片加载失败的常用方法
2015/06/08 Javascript
jquery获取多个checkbox的值异步提交给php
2015/07/07 Javascript
js实现无限级树形导航列表效果代码
2015/09/23 Javascript
jQuery实现横向带缓冲的水平运动效果(附demo源码下载)
2016/01/29 Javascript
详解JavaScript中双等号引起的隐性类型转换
2016/05/30 Javascript
JavaScript实现树的遍历算法示例【广度优先与深度优先】
2017/10/26 Javascript
微信小程序实现刷脸登录
2018/05/25 Javascript
nodejs npm错误Error:UNKNOWN:unknown error,mkdir 'D:\Develop\nodejs\node_global'at Error
2019/03/02 NodeJs
在vue中实现给每个页面顶部设置title
2020/07/29 Javascript
vue 项目引入echarts 添加点击事件操作
2020/09/09 Javascript
Python环境下安装使用异步任务队列包Celery的基础教程
2016/05/07 Python
Linux下安装python3.6和第三方库的教程详解
2018/11/09 Python
pandas通过索引进行排序的示例
2018/11/16 Python
Selenium自动化测试工具使用方法汇总
2020/06/12 Python
Django创建一个后台的基本步骤记录
2020/10/02 Python
python二维图制作的实例代码
2020/12/03 Python
K近邻法(KNN)相关知识总结以及如何用python实现
2021/01/28 Python
护理实习自我鉴定
2013/12/14 职场文书
绿色校园广播稿
2014/10/13 职场文书
党员个人整改措施
2014/10/24 职场文书
具结保证书范本
2015/05/11 职场文书
同事欢送会致辞
2015/07/31 职场文书
入党积极分子培养联系人意见
2015/08/12 职场文书
中秋节祝酒词
2015/08/12 职场文书
APP界面设计技巧和注意事项
2022/04/29 杂记