Python扩展库scipy.misc中图像转换成pillow图像

众所周知,在数字图像处理领域中有很多基准测试图像,这些图像用来作为科研人员PK自己的算法时的参考,给大家提供一个公平的样本,针对同一个问题进行处理时,可以用这些基准图像做实验,比较常见的应该就是lena图像了,公众号中有不少文章也是使用lena图像进行演示的,例如使用Python对图像进行中值滤波Python使用numpy滤除图像中的低频信号

在Python扩展库scipy的misc模块中曾经就有过lena图像的,不过后来不知道为啥取消了,而在与scipy有关的资料或书籍中,很多地方都以face和ascent图像进行演示,直接使用misc.face()和ascent()就可以获得该图像的数据。那么这两个图像到底是什么样的数据呢?通过简单分析就可以发现,这两个图像的数据实际就是像素的颜色值,其中face图像是个彩色图像,其数据是个三维数组,是个1024x768的图像,而图像中每个像素的值又是一个数组,分别对应该像素颜色的红、绿、蓝分量。ascent图像是个灰度图像,其数据是个二维数组,分别对应图像中每个像素的灰度值。

在可视化扩展库matplotlib.pyplot中可以很容易显示数组形式的图像数据,例如

>>> from scipy import misc

>>> import matplotlib.pyplot as plt

>>> face = misc.face()

>>> plt.figure()

<matplotlib.figure.Figure object at 0x0000000005181DA0>

>>> plt.imshow(face)

<matplotlib.image.AxesImage object at 0x000000000804A518>

>>> plt.show()

运行结果为:

在清楚了misc中图像数据的格式和含义之后,我们也可以很容易地把它们转换成图像文件并进行保存。例如下面的代码

from PIL import Image

from scipy import misc

face = misc.ascent()

height, width = len(face), len(face[0])

im = Image.new('RGB',\

(width, height),\

(255,255,255))

for w in range(width):

for h in range(height):

try:

im.putpixel((w,h),\

tuple(face[h][w]))

except:

im.putpixel((w,h),\

(face[h][w],)*3)

im.show()

运行结果为:

把代码第3行中的face = misc.ascent()替换为face = misc.face(),运行结果为:

原文发布于微信公众号 - Python小屋(Python_xiaowu)

原文发表时间:2017-06-21

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏机器之心

资源 | 从VGG到ResNet,你想要的MXNet预训练模型轻松学

2554
来自专栏人工智能LeadAI

Tensorflow之 CNN卷积神经网络的MNIST手写数字识别

前言 tensorflow中文社区对官方文档进行了完整翻译。鉴于官方更新不少内容,而现有的翻译基本上都已过时。故本人对更新后文档进行翻译工作,纰漏之处请大家指正...

6475
来自专栏智能算法

深度学习三人行(第9期)----卷积神经网络实战进阶(附代码)

接下来我们一起学习下关于CNN的代码实现,内存计算和池化层等相关知识,我们多多交流,共同进步。本期主要内容如下:

1013
来自专栏机器学习原理

深度学习——LeNetLeNet解析

2034
来自专栏Coding迪斯尼

用Python从零开始设计数字图片识别神经网络--搭建基本架构

1674
来自专栏深度学习之tensorflow实战篇

SVM:利用sklearn 实现SVM分类 相关参数说明ING

scv 函数 class sklearn.svm.SVC(C=1.0, kernel=’rbf’, degree=3, gamma=’auto’, coef0...

2987
来自专栏和蔼的张星的图像处理专栏

4. 经典卷积网络之AlexNet

原文:《ImageNet Classification with Deep Convolutional Neural Networks》 我没有读原文,这个已...

1692
来自专栏数据结构与算法

概率论中几个入门公式

临时整理一下,以后会慢慢补 独立 独立:对于事件$A$和$B$,如果$P(AB)$=$P(A)P(B)$,那么称$A$和$B$是独立的。 所谓独立,即两事件的结...

3146
来自专栏和蔼的张星的图像处理专栏

7.SSD目标检测之一:运行SSD模型

需要在跟踪模型的前面把检测模型加进去,传统使用一些背景建模和轨迹建模的方式来做,对于动摄像头以及复杂背景的适应性都比较差,所以考虑用深度学习的方法来做。我以前也...

3042
来自专栏杨熹的专栏

TensorFlow-10-基于 LSTM 建立一个语言模型

今日资料: https://www.tensorflow.org/tutorials/recurrent 中文版: http://wiki.jikexue...

5196

扫码关注云+社区

领取腾讯云代金券