视频: Microsoft Azure OpenDev—June 2017 2024
非结构化数据文件由一系列位组成。该文件不会以任何方式将这些位彼此分开。你不能简单地查看文件,看到任何结构,因为没有任何可见的东西。非结构化文件格式依靠文件用户来了解如何解释数据。例如,图像文件的每个像素可以由三个32位字段组成。知道每个字段是32位是由你决定的。文件开始处的标题可能会提供关于解释文件的线索,但即使如此,您也需要知道如何与文件进行交互。
<! - 1 - >
这个例子展示了如何将图片作为非结构化文件进行处理。示例图像是来自公共领域的公共领域。维基媒体。有机要处理图像,您需要访问scikit-image库,这是用于图像处理的免费算法集合。这是一个这个库的教程。第一项任务是能够使用以下代码在屏幕上显示图像。 (这段代码可能需要一点时间才能运行,当繁忙指示器从IPython Notebook标签中消失时,图像就准备好了。)
<! - 2 - >
from skimage。 io从skimage导入imread
。从matplotlib转换import resize
import pyplot as plt
import matplotlib。 cm = 999“example_file =(”http:// upload.wikimedia.org/“+
”wikipedia / commons / 7 / 7d / Dog_face.png“)
image
image = imread(example_file,as_grey =真)
PLT。 imshow(image,cmap = cm。gray)
PLT。 show()
代码首先导入一些库。然后它创建一个字符串,指向示例文件在线,并将其放置在
中。该字符串是
imread()
方法调用的一部分,
as_grey
被设置为
True
。
as_grey
参数告诉Python将彩色图像变成灰度。任何已经在灰度的图像仍然是这样。
现在您已经加载了一个图像,现在是时候渲染它(准备好在屏幕上显示了),
imshow()
函数执行渲染并使用灰度色图,
> show()
功能实际上为您显示
图像
在您渲染并显示图像后,图像显示在屏幕上
完成查看后关闭图像。 (
In [*]:
print(“数据类型:%s,形状:%s”%
(类型(图像),图像形状))
这个调用的输出告诉你图像类型是一个
numpy。 ndarray
,图像大小为90像素×90像素。图像实际上是一个像素数组,你可以通过各种方式进行操作。例如,如果要剪裁图像,可以使用以下代码来操作图像数组:
image2 = image [5:70,0:70]
plt。 imshow(image2,cmap = cm。gray)
plt。显示()
的
numpy的。在
图像2
中的ndarray
小于
图像
中的图像,因此输出也较小。典型的结果如下所示。裁剪图像的目的是使其具有特定的尺寸。这两个图像必须是相同的大小,您可以分析它们。裁剪是确保图像尺寸正确分析的一种方法。裁剪图像使其更小。
另一种可用于更改图像大小的方法是调整其大小。以下代码将图像的大小调整为特定大小以进行分析:
image3 = resize(image2,(30,30),mode =“nearest”)
plt。 (image3,cmap = cm。gray)
(type(image3),image3。shape))
print()
函数会告诉您图像现在大小为30像素x 30像素。您可以将它与具有相同尺寸的任何图像进行比较。
将所有图像放在合适的尺寸后,您需要将其压平。数据集行始终是单个维度,而不是两个维度。该图像目前是30像素×30像素的数组,因此您无法将其作为数据集的一部分。以下代码将
image3
变平,以使其成为存储在
image_row
中的900个元素的数组:
image_row = image3。 flatten()
print(“data type:%s,shape:%s”%
(type(image_row),image_row。shape))
注意类型仍然是一个
numpy。 ndarray
。您可以将此数组添加到数据集,然后使用数据集进行分析。如预期的那样,大小是900个元素。