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

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

总第 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上有哪些比较好的计算机视觉/机器视觉的项目?

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/408389.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Servlet 过滤器

一、过滤器介绍 在Servlet 2.3中定义了过滤器,它能够对Servlet容器的请求和响应进行检查和修改。 Servlet过滤器能够在Servlet被调用之前检查Request对象,并修改Request Header 和 Request内容。 Filter可以过滤Servlet,JSP,HTML。…

每日一学:如何读取网络图片

点击上方“算法猿的成长“,关注公众号,选择加“星标“或“置顶”总第 131 篇文章,本文大约 1300 字,阅读大约需要 3 分钟前言有时候我们需要读取的图片是网络上的图片,应该怎么操作呢?这里也是介绍两个常用…

Windows Phone 如何振动手机?

1. 导入命名空间。 using Windows.Phone.Devices.Notification; 2. 通过调用对 VibrationDevice 类的静态 GetDefault 方法获取对振动控制器的引用。 VibrationDevice vibrationDevice VibrationDevice.GetDefault(); 3. 通过调用 VibrationDevice 类的 Vibrate 方法开始振动。…

编写高效的PyTorch代码技巧(上)

点击上方“算法猿的成长“,关注公众号,选择加“星标“或“置顶”总第 132 篇文章,本文大约 7000 字,阅读大约需要 20 分钟原文:https://github.com/vahidk/EffectivePyTorch作者:vahidk前言这是一份 PyTorc…

react学习(35)----getFieldDecorator will override value

我在自定义组件中定义了value值,getFieldDecorator会覆盖我们定义的值, 需要添加默认值可以使用在getFieldDecorator的时候,设置initialValue, 删除在自定义组件中定义的value就可以了!

【ATT】Reverse Nodes in k-Group

ListNode* reverseBetween(ListNode* prev,ListNode* next)//reverse prev->next, last->prev之间的链表{ListNode* last prev->next;ListNode* cur last->next;while(cur!next){last->next cur->next;cur->next prev->next;prev->next cur;cu…

编写高效的PyTorch代码技巧(下)

点击上方“算法猿的成长“,关注公众号,选择加“星标“或“置顶”总第 133 篇文章,本文大约 3000 字,阅读大约需要 15 分钟原文:https://github.com/vahidk/EffectivePyTorch作者:vahidk前言这是一份 PyTorc…

统计(1 - 2)

统计学基础定义 Statistics的前部分为“state”,政府,原由是统计是300年前被首次应用在政府部门统计人口出生和死亡信息的;如今的统计学早已被应用在各个专业领域; 统计学是用以收集数据、分析数据和数据推论的一组概念、原则和方…

2020年计算机视觉学习指南

点击上方“算法猿的成长“,关注公众号,选择加“星标“或“置顶”总第 134 篇文章,本文大约 3000 字,阅读大约需要 10 分钟原文:https://towardsdatascience.com/guide-to-learn-computer-vision-in-2020-36f19d92c934作…

是选择Keras还是PyTorch开始你的深度学习之旅呢?

点击上方“算法猿的成长“,关注公众号,选择加“星标“或“置顶”总第 135 篇文章,本文大约 7000 字,阅读大约需要 20 分钟原文:https://medium.com/karan_jakhar/keras-vs-pytorch-dilemma-dc434e5b5ae0作者&#xff1…

关于myeclipse打开jsp巨慢解决方案

作为企业级开发最流行的工具,用Myeclipse开发java web程序无疑是最合适的,java web前端采用jsp来显示,myeclipse默认打开jsp的视图有卡顿的现象,那么如何更改jsp默认的打开方式,让我们可以进行更快速的jsp开发呢? 简单…

event

听取了网友:kenwang的意见,我的Blog在记流水账啊,现在才发现我发表的都是代码,一个感想也没有,以后要慢慢改正。明天要培训公司的框架,后天要搬家,这个周未没有得休息。

60分钟快速入门PyTorch

点击上方“算法猿的成长“,关注公众号,选择加“星标“或“置顶”总第 136 篇文章,本文大约 26000 字,阅读大约需要 60 分钟PyTorch 是由 Facebook 开发,基于 Torch 开发,从并不常用的 Lua 语言转为 Python …

react学习(38)----react是什么

什么是组件? 官方定义:将一些简短、独立的代码片段组合成复杂的 UI 界面,这些代码片段被称作“组件”。 解读:我们可以理解为能够组成一个UI界面的每一个独立的代码片段,例如表单的代码集合,轮播图的代码集…

大端与小端

/*************************************大端与小端:与大端存储格式相反,在小端存储格式中,低地址中存放的是字数据的低字节,高地址存放的是字数据的高字节**************************************//*联合体union的存放顺序是所有…

react学习(39)----react中的Hello World

ReactDOM.render(<h1>Hello, world!</h1>,document.getElementById(root) ); 它将在页面上展示一个 “Hello, world!” 的标题。

[libGDX游戏开发教程]使用libGDX进行游戏开发(12)-Action动画

前文章节列表&#xff1a;使用libGDX进行游戏开发(11)-高级编程技巧 使用libGDX进行游戏开发(10)-音乐音效不求人&#xff0c;程序员也可以DIY 使用libGDX进行游戏开发(9)-场景过渡使用libGDX进行游戏开发(8)-没有美工的程序员&#xff0c;能够依赖的还有粒子系统 使用libGDX进…

一年了

到温州出差一年了,一个项目做了一年啊,郁闷啊很想回家,回武汉

react学习(40)----react中的jsx简介

const name Josh Perez;const element <h1>Hello, {name}</h1>; ReactDOM.render(element,document.getElementById(root) ); jsx语法是个表达式 可以直接声明变量