画像データを表示する

Pillow を使って表示する方法と、Matplotlib を使って表示する方法を示します。

Pillow をインストールする場合はコンソールで下記のコマンドを入力してください

# pip が最新である自信があったらやらなくてもいい.
pip install --upgrade pip

# pillow をインストールする.
pip install pillow

Matplotlib をインストールする場合はコンソールで下記のコマンドを入力してください。

# pip が最新である自信があったらやらなくてもいい.
pip install --upgrade pip

# pillow をインストールする.
pip install matplotlib

pip コマンドがうまく通らなかったら、下記のように pip3 にします。

# pip が最新である自信があったらやらなくてもいい.
pip3 install --upgrade pip

# pillow をインストールする.
pip3 install pillow

# matplotlib をインストールする.
pip3 install matplotlib

Pillow を使って画像データを表示する

画像は、Windows、Linux、MacOS、それぞれの適当な画像ビューワをもって表示されます。

import numpy as np
from PIL import Image

w =  512
h = 1024
numpix = w * h

# ubyte な1次元配列を確保する.
data0 = np.zeros( numpix, dtype=np.uint8)

# ななめウロコデータを格納する.
for j in range( h ):
    adrs = w * j
    for i in range( w ):
        level = i + j
        data0[ adrs ] = level
        adrs += 1
        
# 2次元配列に変換する、w と h の順に注目せよ.
data1 = data0.reshape( h, w )      

# 2次元配列を画像データとして解釈する.
im = Image.fromarray( data1 )

# 画像を適当なソフトで表示する.
im.show()

# 2次元配列を1次元配列に戻す.
data2 = data1.reshape( -1 )

# それぞれの配列の形を表示する.
print( "w is {0}".format( w ))
print( "h is {0}".format( h ))
print( data0.shape )
print( data1.shape )
print( data2.shape )

print( "finish." )
PS C:\tmp> python test00.py
w is 512
h is 1024
(524288,)
(1024, 512)
(524288,)
finish.

Matplotlibを使って画像データを表示する

画像は Matplotlib 固有のウインドウを使って表示されます。

import numpy as np
import matplotlib.pyplot as plt

w =  512
h = 1024
numpix = w * h

# ubyte な1次元配列を確保する.
data0 = np.zeros( numpix, dtype=np.uint8)

# ななめウロコデータを格納する.
for j in range( h ):
    adrs = w * j
    for i in range( w ):
        level = i + j
        data0[ adrs ] = level
        adrs += 1
        
# 2次元配列に変換する、w と h の順に注目せよ.
data1 = data0.reshape( h, w )

# Matplotlib で画像を表示する.
plt.imshow( data1, cmap='gray')
plt.xlabel("width")
plt.ylabel("height")
plt.xticks( np.arange( 0, w, 128 ))
plt.yticks( np.arange( 0, h, 128 ))
plt.show()

# 2次元配列を1次元配列に戻す.
data2 = data1.reshape( -1 )

# それぞれの配列の形を表示する.
print( "w is {0}".format( w ))
print( "h is {0}".format( h ))
print( data0.shape )
print( data1.shape )
print( data2.shape )

print( "finish." )
PS C:\tmp> python test01.py
w is 512
h is 1024
(524288,)
(1024, 512)
(524288,)
finish.

このコードは py ファイルをコンソールなどから実行することを想定したものです。もし jupyter ノートブックの中で画像をインライン表示したい場合は、コード冒頭で

%matplotlib inline

と宣言してください。

jupyter ノートブックの中で画像を表示して、それと同時に、移動、拡大or縮小、保存などのアイコンを表示したい場合は、コード冒頭で

%matplotlib notebook

と宣言してください。