前言

在进行图像处理时,经常会用到读取图片并显示出来这样的操作,所以本文总结了python中读取并显示图片的3种方式,分别基于opencv、matplotlib、PIL库实现,并给出了示例代码,介绍如下。

OpenCV

OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉和机器学习软件库,可以运行在Linux、Windows、Android和Mac OS操作系统上。 它轻量级而且高效——由一系列 C 函数和少量 C++ 类构成,同时提供了Python、Ruby、MATLAB等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法。

import matplotlib.pyplot as plt # plt 用于显示图片
import cv2

#opencv的颜色通道顺序为[B,G,R],而matplotlib颜色通道顺序为[R,G,B],所以需要调换一下通道位置
img1 = cv2.imread('./Lena.png')[:,:,(2,1,0)] # 读取和代码处于同一目录下的 lena.png
img2 = cv2.imread('./Lena.png')[:,:,(2,1,0)]

#结果展示
plt.rcParams['font.sans-serif'] = ['SimHei']  # 中文乱码
plt.subplot(121)
#imshow()对图像进行处理,画出图像,show()进行图像显示
plt.imshow(img1)

plt.title('图像1')
#不显示坐标轴
plt.axis('off')

#子图2
plt.subplot(122)
plt.imshow(img2)
plt.title('图像2')
plt.axis('off')

# #设置子图默认的间距
plt.tight_layout()
#显示图像
plt.show()

Matplotlib

Matplotlib 是 Python 的绘图库。 它可与 NumPy 一起使用,提供了一种有效的 MatLab 开源替代方案。 它也可以和图形工具包一起使用,如 PyQt 和 wxPython。

import matplotlib.pyplot as plt # plt 用于显示图片
import matplotlib.image as mpimg # mpimg 用于读取图片

img1 = mpimg.imread('./Lena.png') # 读取和代码处于同一目录下的 lena.png
img2=mpimg.imread('./Lena.png')

#结果展示
plt.rcParams['font.sans-serif'] = ['SimHei']  # 中文乱码
plt.subplot(121)
#imshow()对图像进行处理,画出图像,show()进行图像显示
plt.imshow(img1)

plt.title('图像1')
#不显示坐标轴
plt.axis('off')

#子图2
plt.subplot(122)
plt.imshow(img2)
plt.title('图像2')
plt.axis('off')

# #设置子图默认的间距
plt.tight_layout()
#显示图像
plt.show()

PIL

PIL(Python Image Library)是python的第三方图像处理库,但是由于其强大的功能与众多的使用人数,几乎已经被认为是python官方图像处理库了。。。

PIL可以做很多和图像处理相关的事情:

  • 图像归档(Image Archives)。
  • 图像展示(Image Display)。
  • 图像处理(Image Processing)。
import matplotlib.pyplot as plt # plt 用于显示图片
from PIL import Image

img1 = Image.open('./Lena.png')
img2 = Image.open('./Lena.png')

#结果展示
plt.rcParams['font.sans-serif'] = ['SimHei']  # 中文乱码
plt.subplot(121)
plt.imshow(img1)
plt.title('图像1')
#不显示坐标轴
plt.axis('off')

#子图2
plt.subplot(122)
plt.imshow(img2)
plt.title('图像2')
plt.axis('off')

# #设置子图默认的间距
plt.tight_layout()
#显示图像
plt.show()

运行结果

总结

到此这篇关于python读取并显示图片的三种方法的文章就介绍到这了,更多相关python读取显示图片内容请搜索程序员的世界以前的文章或继续浏览下面的相关文章希望大家以后多多支持程序员的世界!

python读取并显示图片的三种方法(opencv、matplotlib、PIL库)的更多相关文章

  1. 深度学习tensorflow基础mnist

    软件架构mnist数据集的识别使用了两个非常小的网络来实现,第一个是最简单的全连接网络,第二个是卷积网络,mnist数据集是入门数据集,所以不需要进行图像增强,或者用生成器读入内存,直接使用简单的fit()命令就可以一次性训练安装教程使用到的主要第三方库有tensorflow1.x,基于Tensor......

  2. Python基础篇

    一、准备工作1、安装Python(注意选择一个稳定的版本,方便学习和使用)Python官网:https://www.python.org/2、安装一个anacondaanaconda官网:https://www.anaconda.com/安装完成之后在cmd里面输入conda -V检测,如果出现版本......

  3. python学习之plot函数的使用教程

    在python环境中,若要绘制图形,一定离不开plot函数那么,如何使用呢?首先,你需要导入plot函数:import matplotlib.pyplot as plt导入之后,就可以为您的数据绘制各种形式的图了:plt.rcParams['font.sans-serif'] = ['KaiTi']......

  4. python 网页解析器掌握第三方 lxml 扩展库与 xpath 的使用方法

    今天说的则是使用另外一种扩展库 lxml 来对网页完成解析。同样的,lxml 库能完成对 html、xml 格式的文件解析,并且能够用来解析大型的文档、解析速度也是相对比较快的。要掌握 lxml 的使用,就需要掌握掌握 xpath 的使用方法,因为 lxml 扩展库就是基于 xpath 的,所以这一......

  5. python for循环内输出和外输出方式

    通过for循环求和,结果发现输出完全不一样,一个循环是输出每一步的结果,另一个循环是输出最终一次的结果,今天终于弄懂了。如下所示:补充:python中for循环输出(index,value)的两种方法index索引value索引值方法一、利用enumerate()list1=['a','s','d'......

  6. 通过python-pptx模块操作ppt文件的方法

    ppt通过其精美的可视化技巧以及良好的演示效果,成为了职场人士的必备技能。ppt的设计是一门大学问,无论是设计技巧,还是操作方法,都衍生出了专门的课程。本文主要介绍python操作ppt的技巧,编程的优势在于处理速度,对于高大上的ppt设计,还是需要"以人为本", 所以该模块的使......

  7. python 执行函数的九种方法

    方法一:直接调用函数运行这种是最简单且直观的方法def task(): print("running task")task()如果是在类中,也是如此class Task: def task(self): ......

  8. python常用模块的常用方法介绍 os、math、random、time、datetime、国内常见镜像

    导入模块的一些语法from random import randint#2、from 模块名 import 函数名,导入模块里的一个方法或变量 from math import * #3、from 模块名 import * ,导入模块里的'所有'(并不是所有的都能导进来)方法和变量 import d......

  9. Python生成九宫格图片的示例代码

    一、前言大家在朋友圈应该看到过用一张图片以九宫格的方式显示,效果大致如下:要实现上面的效果非常简单,我们只需要截取图片的九个区域即可。今天我们就要带大家使用Python来实现一下九宫格图片的生成。在开始之前,我们需要安装一下Pillow模块,语句如下:pip install pillow下面我们先来......

  10. 如何利用python和DOS获取wifi密码

    CMD命令获取电脑里配置过的wifi信息设定一个场景,假如我忘记了自家的wifi密码,这时候小伙伴来家里跟我开黑,问我wifi密码是多少?我就抓住了这个小秀一波的机会。上才艺:按下win+R键,输入CMD打开DOS窗口,然后输入以下命令查看电脑里配置过的wifi。netsh wlan show pr......

随机推荐

  1. vue+element+oss实现前端分片上传和断点续传

    纯前端实现: 切片上传 断点续传 。断点续传需要在切上上传的基础上实现前端之前上传OSS,无需后端提供接口。先上完整代码,直接复制,将new OSS里的参数修改成自己公司OSS相关信息后可用,如遇问题,请继续往下看。oss官方文档https://help.aliyun.com/document_de......

  2. ASP中常用的22个FSO文件操作函数整理

    在ASP中,FSO的意思是File System Object,即文件系统对象。我们将要操纵的计算机文件系统,在这里是指位于web服务器之上。所以,确认你对此拥有合适的权限。理想情况下,你可以在自己的机器上建立一个web服务器,这样就能方便地进行测试。如果运行于Windows平台,请试一试微软公司的......

  3. Vue+node实现音频录制播放功能

    实现效果:主要实现代码逻辑部分,具体页面结构就不一一介绍了。vue部分:安装recorderxcnpm install recorderx --save 或者npm install recorderx --save在具体的组件中引入<script>import axios from &q......

  4. node.js常用内置模块一

    在使用内模块的时候需要先将所需的内置模块进行引入、OS模块在nodejs中OS模块提供了与操作系统相关的属性和方法// 导入OS内置模块,必须先进行导入,否则无法使用 const os = require("os") // 根据操作系统生成对应的换行符 console.log(o......

  5. 计算机网络安全 —— 对称加密算法 DES (一

    一、对称加密算法概念我们通过计算机网络传输数据时,如果无法防止他人窃听, 可以利用密码学技术将发送的数据变换成对任何不知道如何做逆变换人都不可理解的形式, 从而保证了数据的机密性。这种变换被称为加密( encryption),被加密的数据被称为密 文( ciphertext),而加密前的数据被称为明......

  6. R语言数据重塑知识点总结

    R 语言中的数据重塑是关于改变数据被组织成行和列的方式。 大多数时间 R 语言中的数据处理是通过将输入数据作为数据帧来完成的。 很容易从数据帧的行和列中提取数据,但是在某些情况下,我们需要的数据帧格式与我们接收数据帧的格式不同。 R 语言具有许多功能,在数据帧中拆分,合并和将行更改为列,反之亦然。于......

  7. Java下载远程服务器文件到本地(http协议和ssh2协议)

    Java中java.io包为我们提供了输入流和输出流,对文件的读写基本上都依赖于这些封装好的关于流的类中来实现。前段时间遇到了以下两种需求:1、与某系统对接,每天获取最新的图片并显示在前端页面。该系统提供的是一个http协议的图片URL,本来获取到该系统的图片地址以后在HTML中显示就可以了,但是该......

  8. 详解Pymongo常用查询方法总结

    Python 直接连接mongodb数据库进行查询操作1、安装所需模块使用到的是pymongo模块,安装方法:pip install pymongo2、环境验证3、连接数据库import pymongodef operating_mongodb():client = pymongo.MongoC......

  9. 如何在Vue项目中添加接口监听遮罩

    一、业务背景使用遮罩层来屏蔽用户的非正常操作,是前端经常使用的方式。但是在一些项目中,并没有对遮罩层进行统一管理,这就会造成如下的问题:(1)所有的业务组件都要引入遮罩层组件,也就是每个.vue业务组件,都在template中引入了Mask组件。组件在项目的各个角落都存在,不利于管理,代码极度冗余。......

  10. 讲讲Java8的Optional类

    前言Java 8中引入了 Optional 类来解决 NullPointerException 与繁琐的 null 检查,该类首次出现在 Guava。Java 8 才成为类库中的一部分。入门Optional 是一个封装值的类,用于保存类型为 T 的值;本质上,Optional 就是一个容器。举例来说......