Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenDocCN
matplotlib-doc-zh
提交
ba132f40
M
matplotlib-doc-zh
项目概览
OpenDocCN
/
matplotlib-doc-zh
8 个月 前同步成功
通知
0
Star
192
Fork
111
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
M
matplotlib-doc-zh
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
ba132f40
编写于
1月 08, 2017
作者:
W
wizardforcel
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix
上级
c34771f5
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
9 addition
and
9 deletion
+9
-9
3.5.md
3.5.md
+9
-9
未找到文件。
3.5.md
浏览文件 @
ba132f40
...
...
@@ -32,13 +32,13 @@ In [4]: import numpy as np
加载图像数据由 Pillow 库提供支持。 本来,
`matplotlib`
只支持 PNG 图像。 如果本机读取失败,下面显示的命令会回退到 Pillow。
此示例中使用的图像是 PNG 文件,但是请记住
您
自己的数据的 Pillow 要求。
此示例中使用的图像是 PNG 文件,但是请记住
你
自己的数据的 Pillow 要求。
下面是我们要摆弄的图片:
![](
http://matplotlib.org/_images/stinkbug.png
)
它是一个 24 位 RGB PNG 图像(每个 R,G,B 为 8 位)。 根据
您获取数据的位置,您最有可能遇到的其他类型的图像是 RGBA 图像,拥有透明度或单通道灰度(亮度)的图像。 您
可以右键单击它,选择
`Save image as`
(另存为)为本教程的剩余部分下载到你的计算机。
它是一个 24 位 RGB PNG 图像(每个 R,G,B 为 8 位)。 根据
你获取数据的位置,你最有可能遇到的其他类型的图像是 RGBA 图像,拥有透明度或单通道灰度(亮度)的图像。 你
可以右键单击它,选择
`Save image as`
(另存为)为本教程的剩余部分下载到你的计算机。
现在我们开始...
...
...
@@ -65,7 +65,7 @@ array([[[ 0.40784314, 0.40784314, 0.40784314],
注意这里的
`dtype`
-
`float32`
。 Matplotlib 已将每个通道的8位数据重新定标为 0.0 和 1.0 之间的浮点数。 作为旁注,Pillow 可以使用的唯一数据类型是
`uint8`
。 Matplotlib 绘图可以处理
`float32`
和
`uint8`
,但是对于除 PNG 之外的任何格式的图像,读取/写入仅限于
`uint8`
数据。 为什么是 8 位呢? 大多数显示器只能渲染每通道 8 位的颜色渐变。 为什么他们只能渲染每通道 8 位呢? 因为这会使所有人的眼睛可以看到。 更多信息请见(从摄影的角度):
[
Luminous Landscape 位深度教程
](
http://www.luminous-landscape.com/tutorials/bit-depth.shtml
)
。
每个内部列表表示一个像素。 这里,对于 RGB 图像,有 3 个值。 由于它是一个黑白图像,R,G 和 B 都是类似的。 RGBA(其中 A 是阿尔法或透明度)对于每个内部列表具有 4 个值,而且简单亮度图像仅具有一个值(因此仅是二维数组,而不是三维数组)。 对于 RGB 和 RGBA 图像,
`matplotlib`
支持
`float32`
和
`uint8`
数据类型。 对于灰度,
`matplotlib`
只支持
`float32`
。 如果
您
的数组数据不符合这些描述之一,则需要重新缩放它。
每个内部列表表示一个像素。 这里,对于 RGB 图像,有 3 个值。 由于它是一个黑白图像,R,G 和 B 都是类似的。 RGBA(其中 A 是阿尔法或透明度)对于每个内部列表具有 4 个值,而且简单亮度图像仅具有一个值(因此仅是二维数组,而不是三维数组)。 对于 RGB 和 RGBA 图像,
`matplotlib`
支持
`float32`
和
`uint8`
数据类型。 对于灰度,
`matplotlib`
只支持
`float32`
。 如果
你
的数组数据不符合这些描述之一,则需要重新缩放它。
## 将 NumPy 数组绘制为图像
...
...
@@ -81,7 +81,7 @@ In [6]: imgplot = plt.imshow(img)
### 对图像绘图应用伪彩色方案
伪彩色可以是一个有用的工具,用于增强对比度和更易于可视化
您的数据。 这在使用投影仪对您
的数据进行演示时尤其有用 - 它们的对比度通常很差。
伪彩色可以是一个有用的工具,用于增强对比度和更易于可视化
你的数据。 这在使用投影仪对你
的数据进行演示时尤其有用 - 它们的对比度通常很差。
伪彩色仅与单通道,灰度,亮度图像相关。 我们目前有一个RGB图像。 由于R,G 和 B 都是相似的(见上面或你的数据),我们可以只选择一个通道的数据:
...
...
@@ -106,7 +106,7 @@ In [9]: plt.imshow(lum_img, cmap="hot")
![](
http://matplotlib.org/_images/image_tutorial-3.png
)
请注意,
您
还可以使用
`set_cmap()`
方法更改现有绘图对象上的颜色:
请注意,
你
还可以使用
`set_cmap()`
方法更改现有绘图对象上的颜色:
```
py
In
[
10
]:
imgplot
=
plt
.
imshow
(
lum_img
)
...
...
@@ -117,7 +117,7 @@ In [11]: imgplot.set_cmap('spectral')
> 注
> 但是,请记住,在带有内联后端的 IPython notebook 中,
您不能对已经渲染的绘图进行更改。 如果你在一个单元格中创建了`imgplot`,你不能在以后的单元格中调用`set_cmap()`,并且改变前面的绘图。 请确保您
在相同单元格中一起输入这些命令。`plt`命令不会更改先前单元格的绘图。
> 但是,请记住,在带有内联后端的 IPython notebook 中,
你不能对已经渲染的绘图进行更改。 如果你在一个单元格中创建了`imgplot`,你不能在以后的单元格中调用`set_cmap()`,并且改变前面的绘图。 请确保你
在相同单元格中一起输入这些命令。`plt`命令不会更改先前单元格的绘图。
有许多可选的其它颜色表,请见
[
颜色表的列表和图像
](
http://matplotlib.org/examples/color/colormaps_reference.html
)
。
...
...
@@ -132,11 +132,11 @@ In [13]: plt.colorbar()
![](
http://matplotlib.org/_images/image_tutorial-5.png
)
这会为
您现有的图形添加一个颜色条。 如果您更改并切换到不同的颜色映射,则不会自动更改 - 您
必须重新创建绘图,并再次添加颜色条。
这会为
你现有的图形添加一个颜色条。 如果你更改并切换到不同的颜色映射,则不会自动更改 - 你
必须重新创建绘图,并再次添加颜色条。
### 检查特定数据范围
有时,
您
想要增强图像的对比度,或者扩大特定区域的对比度,同时牺牲变化不大,或者无所谓的颜色细节。 找到有趣区域的最好工具是直方图。 要创建我们的图像数据的直方图,我们使用
`hist()`
函数。
有时,
你
想要增强图像的对比度,或者扩大特定区域的对比度,同时牺牲变化不大,或者无所谓的颜色细节。 找到有趣区域的最好工具是直方图。 要创建我们的图像数据的直方图,我们使用
`hist()`
函数。
```
py
In
[
14
]:
plt
.
hist
(
lum_img
.
ravel
(),
bins
=
256
,
range
=
(
0.0
,
1.0
),
fc
=
'k'
,
ec
=
'k'
)
...
...
@@ -144,7 +144,7 @@ In [14]: plt.hist(lum_img.ravel(), bins=256, range=(0.0, 1.0), fc='k', ec='k')
![](
http://matplotlib.org/_images/image_tutorial-6.png
)
通常,图像的『有趣』部分在峰值附近,
您
可以通过剪切峰值上方和/或下方的区域获得额外的对比度。 在我们的直方图中,看起来最大值处没有太多有用的信息(图像中有很多不是白色的东西)。 让我们调整上限,以便我们有效地『放大』直方图的一部分。 我们通过将
`clim`
参数传递给
`imshow`
来实现。 你也可以通过对图像绘图对象调用
`set_clim()`
方法来做到这一点,但要确保你在使用 IPython Notebook 的时候,和
`plot`
命令在相同的单元格中执行 - 它不会改变之前单元格的图。
通常,图像的『有趣』部分在峰值附近,
你
可以通过剪切峰值上方和/或下方的区域获得额外的对比度。 在我们的直方图中,看起来最大值处没有太多有用的信息(图像中有很多不是白色的东西)。 让我们调整上限,以便我们有效地『放大』直方图的一部分。 我们通过将
`clim`
参数传递给
`imshow`
来实现。 你也可以通过对图像绘图对象调用
`set_clim()`
方法来做到这一点,但要确保你在使用 IPython Notebook 的时候,和
`plot`
命令在相同的单元格中执行 - 它不会改变之前单元格的图。
```
py
In
[
15
]:
imgplot
=
plt
.
imshow
(
lum_img
,
clim
=
(
0.0
,
0.7
))
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录