热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

每日一学:如何用matplotlib展示图片

点击上方“算法猿的成长“,关注公众号,选择加“星标“或“置顶”总第130篇文章,本文大约1000字,阅读大约需要5分钟前言今

点击上方“算法猿的成长“,关注公众号,选择加“星标“或“置顶”

总第 130 篇文章,本文大约 1000 字,阅读大约需要 5 分钟

前言

今天简单介绍如何通过 matplotlib 展示图片,分为以下几种情况:

  1. 直接用 matplotlib 读取图片,然后展示图片;

  2. 采用 opencv 读取图片,然后用 matplotlib 来展示图片;

  3. 采用 PIL 读取图片,然后用 matplotlib 来展示图片。

首先是需要安装需要的库,主要是 opencvmatplotlibPillow  两个库:

pip install opencv-python matplotlib Pillow

此外,在 jupyter 中运行代码。

另外,本次代码例子中展示所用的图片为:

代码和图片都上传到 GitHub 上了:

https://github.com/ccc013/CodesNotes/blob/master/PythonNotes/matplotlib_notes.ipynb

1. matplotlib 读取并展示图片

首先是导入需要的库:

import matplotlib.pyplot as plt
import matplotlib.image as mpimg
%matplotlib inline

第一行就是导入用于展示图片的函数 matplotlibpyplot ,第二行则是用于读取图片的 image ,第三行是因为在 jupyter 中用 matplotlit 展示图片需要加入的一行代码。

接下来就是读取并展示图片,如下所示:

# 采用 matplotlib 展示图片
image = mpimg.imread('plane.jpg')
plt.imshow(image)

结果如下所示:

这里我们发现展示的图片,出现了坐标轴,可以通过添加一行代码,来关闭坐标轴:

plt.axis('off')

结果如下所示:

2. 展示通过 opencv 读取的图片

不过,对于图像库,使用更多的还是 opencv ,所以如何通过 matplotlib 展示 opencv 读取的图片呢?

代码其实很简单,如下所示:

import cv2
image = cv2.imread("plane.jpg")
plt.imshow(image)

但这里发现展示的图片颜色不对,和原图出现了很大的区别,这是为什么呢?

原因其实是 opencv 对于 RGB 图片是将其表示为一个多维的 NumPy 的多维数组,但排列顺序是反序的,也就是BGR 的顺序,因此这里需要对通道顺序进行调整,代码应该这么修改:

plt.imshow(cv2.cvtColor(image, cv2.COLOR_BGR2RGB))

通过进行通道的转换后,再次展示图片,就能显示原图了。

3. 展示通过 PIL 读取的图片

另外一个非常常用的图像处理库就是 PIL 了,这里展示的代码也很简单,如下所示:

# 展示 PIL 读取的图片
from PIL import Image
image = Image.open('plane.jpg')
plt.imshow(image)

小结

今天简单介绍了如何通过 matplotlib 来展示图片,分别是三种情况,直接用 matplotlib 读取图片,用 opencv 读取图片,用 PIL 读取图片,其中需要注意的是 opencv 读取图片的情况,因为其对于 RGB 通道的排列是反序的。


精选AI文章

1. 10个实用的机器学习建议

2. 深度学习算法简要综述(上)

3. 深度学习算法简要综述(上)

4. 常见的数据增强项目和论文介绍

5. 实战|手把手教你训练一个基于Keras的多标签图像分类器

精选python文章

1.  python数据模型

2. python版代码整洁之道

3. 快速入门 Jupyter notebook

4. Jupyter 进阶教程

5. 10个高效的pandas技巧

精选教程资源文章

1. [资源分享] TensorFlow 官方中文版教程来了

2. [资源]推荐一些Python书籍和教程,入门和进阶的都有!

3. [Github项目推荐] 推荐三个助你更好利用Github的工具

4. Github上的各大高校资料以及国外公开课视频

5. GitHub上有哪些比较好的计算机视觉/机器视觉的项目?

欢迎关注我的微信公众号--算法猿的成长,或者扫描下方的二维码,大家一起交流,学习和进步! 

如果觉得不错,在看、转发就是对小编的一个支持!



推荐阅读
  • 大家好,全新的技术专栏《从零开始掌握容器云网络实战》正式上线。该专栏将系统地介绍容器云网络的基础知识、核心技术和实际应用案例,帮助读者全面理解和掌握容器云网络的关键技术与实践方法。 ... [详细]
  • MATLAB实现Sobel边缘检测算法
    图像边缘是指图像中灰度值发生显著变化的区域。Sobel算子是一种常用的边缘检测方法,通过计算图像灰度值的梯度来检测边缘。本文介绍了Sobel算子的基本原理,并提供了基于MATLAB的实现代码。 ... [详细]
  • MySQL 5.7 学习指南:SQLyog 中的主键、列属性和数据类型
    本文介绍了 MySQL 5.7 中主键(Primary Key)和自增(Auto-Increment)的概念,以及如何在 SQLyog 中设置这些属性。同时,还探讨了数据类型的分类和选择,以及列属性的设置方法。 ... [详细]
  • 中国学者实现 CNN 全程可视化,详尽展示每次卷积、ReLU 和池化过程 ... [详细]
  • EST:西湖大学鞠峰组污水厂病原菌与土著反硝化细菌是多重抗生素耐药基因的活跃表达者...
    点击蓝字关注我们编译:祝新宇校稿:鞠峰、袁凌论文ID原名:PathogenicandIndigenousDenitrifyingBacte ... [详细]
  • 三角测量计算三维坐标的代码_双目三维重建——层次化重建思考
    双目三维重建——层次化重建思考FesianXu2020.7.22atANTFINANCIALintern前言本文是笔者阅读[1]第10章内容的笔记,本文从宏观的角度阐 ... [详细]
  • 近期,微信公众平台上的HTML5游戏引起了广泛讨论,预示着HTML5游戏将迎来新的发展机遇。磊友科技的赵霏,作为一名HTML5技术的倡导者,分享了他在微信平台上开发HTML5游戏的经验和见解。 ... [详细]
  • 浅析python实现布隆过滤器及Redis中的缓存穿透原理_python
    本文带你了解了位图的实现,布隆过滤器的原理及Python中的使用,以及布隆过滤器如何应对Redis中的缓存穿透,相信你对布隆过滤 ... [详细]
  • 秒建一个后台管理系统?用这5个开源免费的Java项目就够了
    秒建一个后台管理系统?用这5个开源免费的Java项目就够了 ... [详细]
  • 20款必备PS插件免费大放送,附详细安装指南
    对于众多关注小资源并学习PS的用户来说,每次分享设计素材都会收到大量反馈。为了更好地满足大家的需求,今天我们特别推出了20款必备的PS插件大合集,并附有详细的安装指南,确保每位用户都能轻松上手,提升设计效率。 ... [详细]
  • 在本文中,我们将详细介绍如何构建一个用于自动回复消息的XML类。当微信服务器接收到用户消息时,该类将生成相应的自动回复消息。以下是具体的代码实现:```phpclass We_Xml { // 代码内容}```通过这个类,开发者可以轻松地处理各种消息类型,并实现高效的自动回复功能。我们将深入探讨类的各个方法和属性,帮助读者更好地理解和应用这一技术。 ... [详细]
  • 本文深入探讨了Java多线程环境下的同步机制及其应用,重点介绍了`synchronized`关键字的使用方法和原理。`synchronized`关键字主要用于确保多个线程在访问共享资源时的互斥性和原子性。通过具体示例,如在一个类中使用`synchronized`修饰方法,展示了如何实现线程安全的代码块。此外,文章还讨论了`ReentrantLock`等其他同步工具的优缺点,并提供了实际应用场景中的最佳实践。 ... [详细]
  • Golomb 编码是一种高效的变长编码技术,专门用于整数的压缩。该方法通过预定义的参数 \( M \) 将输入整数分解为商 \( q \) 和余数 \( r \) 两部分。具体而言,输入整数除以 \( M \) 得到商 \( q \) 和余数 \( r \),其中商 \( q \) 采用一元编码表示,而余数 \( r \) 则使用二进制编码。这种编码方式在数据压缩和信息传输中具有显著的优势,特别是在处理具有特定概率分布的数据时表现出色。 ... [详细]
  • 探索聚类分析中的K-Means与DBSCAN算法及其应用
    聚类分析是一种用于解决样本或特征分类问题的统计分析方法,也是数据挖掘领域的重要算法之一。本文主要探讨了K-Means和DBSCAN两种聚类算法的原理及其应用场景。K-Means算法通过迭代优化簇中心来实现数据点的划分,适用于球形分布的数据集;而DBSCAN算法则基于密度进行聚类,能够有效识别任意形状的簇,并且对噪声数据具有较好的鲁棒性。通过对这两种算法的对比分析,本文旨在为实际应用中选择合适的聚类方法提供参考。 ... [详细]
  • 深入解析经典卷积神经网络及其实现代码
    深入解析经典卷积神经网络及其实现代码 ... [详细]
author-avatar
zjjj-jz政
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有