-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathhenkan.py
48 lines (44 loc) · 1.56 KB
/
henkan.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
import struct
import numpy as np
import matplotlib.pyplot as plt
#
# / ̄ ̄ ̄ ̄\
# / \
# / _______∧
# / | /⌒ |∧
# `| |_\_ __| |
# L_亅|(0| |0)| L_亅
# `("ヽノヽワヽノ")′
# \_____/
# /∨8∨\
# ⊂∨| 凵 |∨⊃
# |__|
# HH
# (ニ)(ニ)
# バイナリデータを読み込む
with open('images/train-images-idx3-ubyte','rb') as f:
# バイナリデータの最初の4バイトを取得
magic_number = f.read(4)
# バイトをint型に変換
magic_number = struct.unpack('>i', magic_number)
# バイナリデータの5バイト目から取得
num_images = f.read(4)
# バイトをint型に変換
num_images = struct.unpack('>i', num_images)
# 画像1枚あたりのバイト数を取得
num_bytes = 28 * 28
# 画像を格納する配列を定義
images = []
# バイナリデータから画像を一つ一つ取得
for i in range(num_images[0]):
# 画像1枚分のバイナリデータを取得
image = f.read(num_bytes)
# バイトをint型に変換
image = struct.unpack('>784B',image)
# 画像を配列に格納
images.append(image)
# 配列から画像を取得
for index, image in enumerate(images):
# 配列を28x28の配列に変換
image = np.array(image).reshape(28,28)
plt.imsave('image_{}.png'.format(index), image, cmap='gray')