[Python] pngファイルを表示する方法
PythonでPNGファイルを表示するには、主に以下のライブラリを使用します。
matplotlib
のimshow関数
を使う方法が一般的です。
まず、PIL
(Python Imaging Library)またはその後継であるPillow
を使って画像を読み込み、matplotlib.pyplot
のimshow
で表示します。
また、OpenCV
を使って画像を表示することも可能です。
OpenCV
ではcv2.imread
で画像を読み込み、cv2.imshow
で表示します。
PNGファイルを表示するための準備
PNGファイルを表示するためには、いくつかのライブラリをインストールする必要があります。
ここでは、一般的に使用されるライブラリであるMatplotlib、Pillow、OpenCVのインストール方法を紹介します。
これらのライブラリは、Pythonで画像を扱う際に非常に便利です。
ライブラリ名 | インストールコマンド |
---|---|
Matplotlib | pip install matplotlib |
Pillow | pip install Pillow |
OpenCV | pip install opencv-python |
これらのコマンドをターミナルやコマンドプロンプトで実行することで、必要なライブラリをインストールできます。
インストールが完了したら、PNGファイルを表示する準備が整います。
Matplotlibを使ったPNGファイルの表示
Matplotlibとは
Matplotlibは、Pythonでデータを可視化するための強力なライブラリです。
特に、2Dグラフや画像の表示に優れており、科学技術計算やデータ分析の分野で広く使用されています。
PNGファイルを表示する際にも、Matplotlibは非常に便利です。
imshow関数を使った画像表示
imshow関数
を使用することで、PNGファイルを簡単に表示できます。
以下は、imshow
を使った基本的なサンプルコードです。
import matplotlib.pyplot as plt
import matplotlib.image as mpimg
# PNGファイルを読み込む
img = mpimg.imread('sample.png')
# 画像を表示する
plt.imshow(img)
plt.axis('off') # 軸を非表示にする
plt.show()
このコードを実行すると、指定したPNGファイルが表示されます。
画像のサイズやカラーマップの調整
imshow関数
では、画像のサイズやカラーマップを調整することも可能です。
以下のサンプルコードでは、画像のサイズを変更し、カラーマップを指定しています。
import matplotlib.pyplot as plt
import matplotlib.image as mpimg
# PNGファイルを読み込む
img = mpimg.imread('sample.png')
# 画像を表示する
plt.figure(figsize=(10, 5)) # サイズを指定
plt.imshow(img, cmap='gray') # カラーマップをグレースケールに設定
plt.axis('off') # 軸を非表示にする
plt.show()
このコードを実行すると、指定したサイズとカラーマップでPNGファイルが表示されます。
PNGファイルの透明度(アルファチャンネル)対応
PNGファイルは透明度を持つことができ、Matplotlibでもその透明度を扱うことができます。
以下のサンプルコードでは、透明度を持つPNGファイルを表示しています。
import matplotlib.pyplot as plt
import matplotlib.image as mpimg
# PNGファイルを読み込む
img = mpimg.imread('transparent_sample.png')
# 画像を表示する
plt.imshow(img)
plt.axis('off') # 軸を非表示にする
plt.show()
このコードを実行すると、透明度を持つPNGファイルが正しく表示されます。
透明部分は背景が透けて見えるようになります。
Pillowを使ったPNGファイルの表示
Pillowとは
Pillowは、Pythonで画像処理を行うためのライブラリで、画像の読み込み、加工、保存などの機能を提供します。
PIL(Python Imaging Library)の後継として開発されており、使いやすさと多機能性が特徴です。
PNGファイルを扱う際にも、Pillowは非常に便利です。
Image.openでPNGファイルを読み込む
Pillowを使用してPNGファイルを読み込むには、Image.open関数
を使用します。
以下は、PNGファイルを読み込む基本的なサンプルコードです。
from PIL import Image
# PNGファイルを読み込む
img = Image.open('sample.png')
# 画像の情報を表示する
print(img.format, img.size, img.mode)
このコードを実行すると、PNGファイルのフォーマット、サイズ、モード(色空間)が表示されます。
PillowとMatplotlibの連携
Pillowで読み込んだ画像をMatplotlibを使って表示することもできます。
以下のサンプルコードでは、PillowでPNGファイルを読み込み、Matplotlibで表示しています。
from PIL import Image
import matplotlib.pyplot as plt
# PNGファイルを読み込む
img = Image.open('sample.png')
# 画像を表示する
plt.imshow(img)
plt.axis('off') # 軸を非表示にする
plt.show()
このコードを実行すると、Pillowで読み込んだPNGファイルがMatplotlibを使って表示されます。
Pillow単体での画像表示方法
Pillow単体でも画像を表示することができます。
以下のサンプルコードでは、Pillowを使ってPNGファイルを表示しています。
from PIL import Image
# PNGファイルを読み込む
img = Image.open('sample.png')
# 画像を表示する
img.show()
このコードを実行すると、デフォルトの画像ビューアが開き、PNGファイルが表示されます。
Pillowを使うことで、簡単に画像を表示することができます。
OpenCVを使ったPNGファイルの表示
OpenCVとは
OpenCV(Open Source Computer Vision Library)は、コンピュータビジョンや画像処理のためのオープンソースライブラリです。
リアルタイムの画像処理や解析が可能で、特に機械学習やディープラーニングの分野でも広く利用されています。
PNGファイルを扱う際にも、OpenCVは非常に強力なツールです。
cv2.imreadでPNGファイルを読み込む
OpenCVを使用してPNGファイルを読み込むには、cv2.imread関数
を使用します。
以下は、PNGファイルを読み込む基本的なサンプルコードです。
import cv2
# PNGファイルを読み込む
img = cv2.imread('sample.png')
# 画像の情報を表示する
print(img.shape) # 画像のサイズ(高さ、幅、チャンネル数)を表示
このコードを実行すると、PNGファイルのサイズ(高さ、幅、チャンネル数)が表示されます。
cv2.imshowで画像を表示する
cv2.imshow関数
を使用することで、読み込んだPNGファイルを表示できます。
以下のサンプルコードでは、画像を表示する方法を示しています。
import cv2
# PNGファイルを読み込む
img = cv2.imread('sample.png')
# 画像を表示する
cv2.imshow('Image', img)
# ウィンドウが閉じるまで待機
cv2.waitKey(0)
cv2.destroyAllWindows()
このコードを実行すると、指定したPNGファイルがウィンドウに表示されます。
cv2.waitKey(0)
は、キー入力を待機するための関数です。
OpenCVでのウィンドウ操作とキー入力
OpenCVでは、ウィンドウの操作やキー入力を簡単に行うことができます。
以下のサンプルコードでは、特定のキーが押されたときにウィンドウを閉じる方法を示しています。
import cv2
# PNGファイルを読み込む
img = cv2.imread('sample.png')
# 画像を表示する
cv2.imshow('Image', img)
# 'q'キーが押されるまで待機
while True:
if cv2.waitKey(1) & 0xFF == ord('q'):
break
cv2.destroyAllWindows()
このコードを実行すると、ウィンドウが表示され、’q’キーを押すことでウィンドウが閉じます。
PNGファイルの透明度を扱う方法
OpenCVでは、PNGファイルの透明度(アルファチャンネル)を扱うこともできます。
以下のサンプルコードでは、透明度を持つPNGファイルを読み込み、表示しています。
import cv2
# PNGファイルを読み込む(アルファチャンネルを含む)
img = cv2.imread('transparent_sample.png', cv2.IMREAD_UNCHANGED)
# 画像を表示する
cv2.imshow('Image with Alpha', img)
# ウィンドウが閉じるまで待機
cv2.waitKey(0)
cv2.destroyAllWindows()
このコードを実行すると、透明度を持つPNGファイルが正しく表示されます。
透明部分は背景が透けて見えるようになります。
IPython/Jupyter NotebookでのPNGファイル表示
Jupyter Notebookでの画像表示の利点
Jupyter Notebookは、インタラクティブなデータ分析や可視化に非常に便利な環境です。
画像を表示する際の利点は以下の通りです。
- インタラクティブ性: コードを実行しながら、すぐに結果を確認できるため、デバッグやデータ分析が効率的に行えます。
- Markdownサポート: 説明文や数式をMarkdown形式で記述できるため、結果をわかりやすく整理できます。
- 複数のライブラリとの統合: MatplotlibやPillowなど、さまざまなライブラリと簡単に連携でき、画像処理や表示がスムーズです。
IPython.displayを使った画像表示
IPython.display
モジュールを使用すると、Jupyter Notebook内で簡単に画像を表示できます。
以下は、Imageクラス
を使った基本的なサンプルコードです。
from IPython.display import Image, display
# PNGファイルを表示する
display(Image(filename='sample.png'))
このコードを実行すると、指定したPNGファイルがNotebook内に表示されます。
Matplotlibを使ったNotebookでの画像表示
Matplotlibを使用してPNGファイルを表示することもできます。
以下のサンプルコードでは、Matplotlibを使って画像を表示しています。
import matplotlib.pyplot as plt
import matplotlib.image as mpimg
# PNGファイルを読み込む
img = mpimg.imread('sample.png')
# 画像を表示する
plt.imshow(img)
plt.axis('off') # 軸を非表示にする
plt.show()
このコードを実行すると、指定したPNGファイルがMatplotlibを使ってNotebook内に表示されます。
Pillowを使ったNotebookでの画像表示
Pillowを使用してPNGファイルを表示することも可能です。
以下のサンプルコードでは、Pillowを使って画像を表示しています。
from PIL import Image
import matplotlib.pyplot as plt
# PNGファイルを読み込む
img = Image.open('sample.png')
# 画像を表示する
plt.imshow(img)
plt.axis('off') # 軸を非表示にする
plt.show()
このコードを実行すると、Pillowで読み込んだPNGファイルがMatplotlibを通じてNotebook内に表示されます。
これにより、Pillowの画像処理機能を活用しつつ、Matplotlibの可視化機能を利用することができます。
応用例:PNGファイルの加工と表示
画像のリサイズと表示
画像のリサイズは、指定したサイズに画像を変更する操作です。
以下のサンプルコードでは、Pillowを使用してPNGファイルをリサイズし、表示しています。
from PIL import Image
import matplotlib.pyplot as plt
# PNGファイルを読み込む
img = Image.open('sample.png')
# 画像をリサイズする
resized_img = img.resize((200, 200)) # 幅200px、高さ200pxにリサイズ
# 画像を表示する
plt.imshow(resized_img)
plt.axis('off') # 軸を非表示にする
plt.show()
このコードを実行すると、リサイズされたPNGファイルが表示されます。
画像の回転・反転と表示
画像を回転させたり反転させたりすることも可能です。
以下のサンプルコードでは、画像を90度回転させ、上下反転させて表示しています。
from PIL import Image
import matplotlib.pyplot as plt
# PNGファイルを読み込む
img = Image.open('sample.png')
# 画像を90度回転させる
rotated_img = img.rotate(90) # 90度回転
# 画像を上下反転させる
flipped_img = img.transpose(Image.FLIP_TOP_BOTTOM) # 上下反転
# 画像を表示する
plt.figure(figsize=(10, 5))
plt.subplot(1, 2, 1)
plt.imshow(rotated_img)
plt.axis('off')
plt.title('90度回転')
plt.subplot(1, 2, 2)
plt.imshow(flipped_img)
plt.axis('off')
plt.title('上下反転')
plt.show()
このコードを実行すると、回転した画像と反転した画像が並んで表示されます。
画像の切り抜きと表示
画像の切り抜きは、特定の領域を抽出する操作です。
以下のサンプルコードでは、画像の一部を切り抜いて表示しています。
from PIL import Image
import matplotlib.pyplot as plt
# PNGファイルを読み込む
img = Image.open('sample.png')
# 画像を切り抜く(左、上、右、下の座標を指定)
cropped_img = img.crop((50, 50, 200, 200)) # (50, 50)から(200, 200)の領域を切り抜く
# 画像を表示する
plt.imshow(cropped_img)
plt.axis('off') # 軸を非表示にする
plt.show()
このコードを実行すると、指定した領域が切り抜かれたPNGファイルが表示されます。
画像のフィルタリングと表示
画像にフィルタを適用することで、さまざまな効果を得ることができます。
以下のサンプルコードでは、画像にぼかしフィルタを適用して表示しています。
from PIL import Image, ImageFilter
import matplotlib.pyplot as plt
# PNGファイルを読み込む
img = Image.open('sample.png')
# 画像にぼかしフィルタを適用する
blurred_img = img.filter(ImageFilter.BLUR)
# 画像を表示する
plt.imshow(blurred_img)
plt.axis('off') # 軸を非表示にする
plt.show()
このコードを実行すると、ぼかしフィルタが適用されたPNGファイルが表示されます。
PNGファイルの結合と表示
複数のPNGファイルを結合することも可能です。
以下のサンプルコードでは、2つの画像を横に結合して表示しています。
from PIL import Image
import matplotlib.pyplot as plt
# PNGファイルを読み込む
img1 = Image.open('sample1.png')
img2 = Image.open('sample2.png')
# 画像を結合する
combined_img = Image.new('RGB', (img1.width + img2.width, max(img1.height, img2.height)))
combined_img.paste(img1, (0, 0)) # img1を左側に貼り付け
combined_img.paste(img2, (img1.width, 0)) # img2を右側に貼り付け
# 画像を表示する
plt.imshow(combined_img)
plt.axis('off') # 軸を非表示にする
plt.show()
このコードを実行すると、2つのPNGファイルが横に結合された画像が表示されます。
これにより、複数の画像を一つの画像として扱うことができます。
まとめ
この記事では、Pythonを使用してPNGファイルを表示するためのさまざまな方法について詳しく解説しました。
Matplotlib、Pillow、OpenCV、Jupyter Notebookなどのライブラリを活用することで、画像の表示や加工が容易に行えることがわかりました。
これらの技術を活用して、画像処理やデータ可視化のプロジェクトに取り組んでみてください。