【Python】画像表示の方法を初心者向けにわかりやすく解説
はじめに
Pythonで画像を表示したいという場面は、画像処理を行うときやデータ分析の可視化を行うときなど、さまざまな場面で出てくるでしょう。
しかし、実際にどのような方法を使えば良いのか、初心者の方にとってはわかりづらいかもしれません。
そこでこの記事では、Pythonにおける画像の表示方法について、いくつかのライブラリを紹介しながら丁寧に解説します。
ライブラリには、Pillow(ピロー)やMatplotlib、OpenCVなどが挙げられます。
これらは場面ごとに役立つ特徴がありますので、それぞれの使い方を把握しておくことで、より柔軟にアプリケーションを組み立てることができるはずです。
また、単に画像を表示するだけでなく、簡単な処理や応用例もあわせて説明しますので、実践につなげやすいでしょう。
さらに、プログラミング初心者の方向けに、画像表示の手順や関連する用語をできるだけ平易な言葉で解説していきます。
もし技術的なキーワードが出てきたとしても、なるべくかみ砕いて説明しますので、最初の一歩を踏み出すうえで役立つのではないでしょうか。
この記事を読むとわかること
- Pythonで画像を表示するための基本的な仕組み
- Pillow、Matplotlib、OpenCVなどのライブラリを使った実装方法
- 実際の作業シーンで役立つ具体的なイメージと活用例
- 初心者が混乱しやすいポイントと、その対応策
ここでは複雑な専門用語よりも、最初のハードルを越えるために必要な内容にフォーカスしています。
実務経験のない方でも、記事を通じて画像表示のイメージをしっかりつかんでいただけるように心がけます。
Pythonで画像表示が必要となるシーン
Pythonで画像表示を行う必要が生じるのは、単に写真を表示したいケースだけではありません。
以下のようなシーンでも画像表示の知識が求められることがあります。
画像処理やコンピュータビジョン
画像内のオブジェクト検出や色の変換などを行ったあとに、その結果をチェックするために画像表示をすることが多いです。
データ分析・機械学習
画像をデータとして扱う場合、その前処理や特徴を確認するときに可視化が重要な役割を果たします。
GUIやWebアプリケーションの開発
Pythonで簡易的なユーザーインターフェースを作る場合、画面上に画像を表示してステータスやアイコンを見せたいことがあります。
こうした作業の入り口として、まずはPythonで画像を表示する方法を知っておくことが大切です。
初心者の皆さんにとっては、最初から難易度の高い画像解析を行うよりも、まず「どうやって画像を見られるのか」を押さえるところから始めるとスムーズではないでしょうか。
Pillowで画像を表示する方法
Pillowは、Pythonの標準ライブラリであるPIL(Python Imaging Library)の後継となるライブラリです。
画像の操作が比較的シンプルにできるため、多くの開発現場や学習の場面で利用されています。
ここでは、実際に画像を表示する最もシンプルな流れを見てみましょう。
Pillowを使った基本的な表示方法
Pillowをインストールしていない場合は、あらかじめ pip install Pillow
で導入しておきます。
その後、以下のコードを使ってみてください。
from PIL import Image # 画像ファイルのパスを指定 image_path = "example.jpg" # 画像を開く img = Image.open(image_path) # 画像を表示 img.show()
Image.open(image_path)
で画像ファイルを読み込みます。img.show()
メソッドで、標準の画像ビューアが立ち上がり、画像が表示されます。
表示だけでなく、Pillowはリサイズやトリミングなどの機能も備えています。
実務でも、たとえばユーザーがアップロードした写真を縮小表示したり、特定の部分だけ切り取ったりするケースで重宝されます。
Pillowの特徴とメリット
Pillowは、初心者にも扱いやすいことが大きなメリットです。
コード量が少なく、画像関連の処理をスムーズに行いやすいでしょう。
具体的には次のような使い方が考えられます。
- SNS用の画像をリサイズしてサムネイルを作成
- 複数の写真を一括で回転や切り抜き
- 特定の領域を抽出して文字認識 (OCR) 用に前処理
このように、ちょっとした画像加工から軽めの画像認識前処理まで幅広く活用できます。
初心者の方は、一度このライブラリで画像の読み書きと表示を習得してみると良いかもしれません。
Matplotlibで画像を表示する方法
次に紹介するのは、グラフ描画ライブラリとして有名なMatplotlibです。
本来は折れ線グラフや棒グラフなどのデータ可視化が得意ですが、画像を表示する機能も備えています。
Matplotlibを使った表示の基本
Matplotlibをインストールしていない場合は、pip install matplotlib
で導入できます。
以下のコードは、画像を表示する最もシンプルな使い方です。
import matplotlib.pyplot as plt import matplotlib.image as mpimg # 画像ファイルのパスを指定 image_path = "example.jpg" # 画像を読み込む img = mpimg.imread(image_path) # 表示用ウィンドウを設定 plt.imshow(img) # 軸を非表示にする(不要な場合は削除) plt.axis('off') # 表示 plt.show()
matplotlib.image
モジュールのimread
で画像を読み込みます。imshow
関数で画像をウィンドウに描画します。plt.show()
で表示ウィンドウを起動します。
Matplotlibを使った応用例
Matplotlibなら、画像をグラフと同じように扱えるため、ほかの可視化要素と組み合わせやすいのが特徴です。
たとえば、画像に重ねて線を描画したり、テキストを表示したりすることも可能です。
import matplotlib.pyplot as plt import matplotlib.image as mpimg image_path = "example.jpg" img = mpimg.imread(image_path) plt.imshow(img) plt.axis('off') # 画像の上にテキストを配置(位置は座標で指定) plt.text(50, 50, "Hello", color="white", fontsize=16) plt.show()
テキストの色や大きさを変えて、簡単な注釈を入れる場合などに役立ちます。
データ分析の現場では、画像と数値情報を同時にプロットして、より深いインサイトを得るために活用することがあるでしょう。
OpenCVで画像を表示する方法
画像処理の分野で広く使われているライブラリにOpenCVがあります。
OpenCVは、コンピュータビジョンや機械学習のタスクに特化した豊富な機能が用意されています。
初心者には少しハードルが高い印象があるかもしれませんが、画像を表示するだけならシンプルです。
OpenCVを使った表示の基本
インストールは pip install opencv-python
で行います。
以下のコードで、画像の表示を確認してみましょう。
import cv2 # 画像ファイルのパスを指定 image_path = "example.jpg" # 画像を読み込む(カラー画像として読み込み) img = cv2.imread(image_path, cv2.IMREAD_COLOR) # ウィンドウ上に画像を表示 cv2.imshow("Display window", img) # キー入力待ち(ウィンドウがすぐ閉じないように) cv2.waitKey(0) # ウィンドウを閉じる cv2.destroyAllWindows()
cv2.imread
で画像を読み込みます。cv2.imshow
でウィンドウを作成し、その中に画像を表示します。cv2.waitKey(0)
は、何かしらのキーが押されるまでウィンドウを開いたままにするための処理です。- 作業が終わったら
cv2.destroyAllWindows()
でウィンドウを閉じます。
OpenCVのメリット
OpenCVのメリットは、画像処理に必要な機能がオールインワンで充実している点です。
例えば、以下のようなことが簡単に行えます。
- 顔や物体の検出
- しきい値処理 (白黒画像への変換など)
- カメラ入力との連携
コンピュータビジョンの分野に進みたいと考えている方には、有力な選択肢となるでしょう。
また、リアルタイム映像からの解析など、高度な応用も視野に入れることができます。
IPython.displayでの表示(Jupyter Notebook向け)
もしJupyter NotebookやJupyterLabなどの環境でPythonを触っている場合は、IPython.display を使う方法もあります。
これは特に、Notebook上で画像をインライン表示したいときに便利です。
IPython.display の例
from IPython.display import Image, display # 画像ファイルを指定してNotebook上に表示 display(Image(filename="example.jpg"))
Notebook環境でコードセルを実行すると、出力セルに画像が表示されます。
学習データの可視化や分析結果の確認を、その場で並べて実施できるため、非常に扱いやすいでしょう。
画像表示の際に気をつけたいポイント
画像表示は比較的シンプルな作業ですが、初心者の方はちょっとした引っかかりポイントがあるかもしれません。
以下では、その代表的な例を紹介します。
画像パスの取り扱い
コードを実行する場所(ワーキングディレクトリ)と、画像ファイルが置いてある場所が異なるときにエラーが出ることがあります。
実務では、複数の画像ファイルをまとめて管理するケースが多く、ディレクトリ構造が複雑になりがちです。
相対パスや絶対パスをきちんと意識し、指定ミスを防ぎましょう。
画像のパスを取得する際には、Pythonの標準ライブラリである os
モジュールを使う方法もあります。
たとえば os.path.join
を利用してパスを組み立てるようにすると、プラットフォームの違いをあまり意識せずに済むでしょう。
ウィンドウの閉じ方やNotebook環境との違い
PillowやMatplotlibを使う場合は、いわゆる「画像ビューア」をOSが立ち上げるか、Matplotlibのウィンドウで表示するかなど、環境によって表示の仕方が異なります。
OpenCVは cv2.imshow
で専用のウィンドウを開きますが、プログラムの最後にはウィンドウを閉じる処理を忘れないようにしましょう。
Notebook環境ではインライン表示が主流なので、 imshow()
や display()
を使うことが多くなります。
処理後の画像の確認
実務では、画像を加工した結果を確認したいケースがよくあります。
たとえば、縦横のサイズを変えた後に本当に目的通りか確かめる場面があるでしょう。
Pillowなら img.show()
、OpenCVなら cv2.imshow()
で確認ができるため、プログラムの途中結果を簡単に可視化できます。
ただ、Notebook上でOpenCVの cv2.imshow()
を使おうとするとエラーが出ることもあるので、使う環境に合わせた方法を選びましょう。
さまざまな表示方法の比較
ここまで、Pillow、Matplotlib、OpenCV、IPython.displayの4つの方法を紹介しました。
用途によってどの手段が便利かは変わってきます。
方法 | 特徴 | 主な用途やシーン |
---|---|---|
Pillow | コード量が少なく扱いやすい | 軽い加工、サイズ変更、トリミングなど |
Matplotlib | グラフ描画と組み合わせられる | データ分析での画像比較、注釈を入れながらの可視化 |
OpenCV | 画像処理やコンピュータビジョンに強い | 顔認識や物体検出、リアルタイム映像の処理 |
IPython.display | Notebook上でインライン表示が簡単 | データ分析や学習環境でのリアルタイム可視化 |
すでに分析用のプロジェクトでMatplotlibを使っているなら、そのまま imshow()
を利用するほうが効率的です。
一方で、がっつりコンピュータビジョンの領域に入っていくならOpenCVが頼もしい選択肢でしょう。
こうした判断基準をあらかじめ持っておくと、作業効率が高まります。
実務で活かすためのポイント
初心者の方が、いざ実際のプロジェクトで画像表示の知識を活かすためには、いくつかのポイントを押さえておくことが大切です。
大きなファイルを扱うときの注意
一眼レフカメラで撮影したような高解像度の写真や、医療画像のような特別なフォーマットを扱う場合は、読み込みや表示に時間がかかることがあります。
その場合、画像サイズを縮小してプレビューを行い、必要に応じてフル解像度の画像を処理するようにすると良いでしょう。
ライブラリのバージョン差異
同じOpenCVでも、バージョンが異なると関数名や引数の仕様が少し変わることがあります。
基本的に公式ドキュメントをチェックしながら実装を進めるのが安全です。
チーム開発の場合、メンバー間で利用するライブラリのバージョンを合わせておくと、トラブルを減らせるでしょう。
エラー処理の考え方
画像ファイルが見つからない、ファイルの拡張子が不正といったエラーが起こり得ます。
業務システムでは、こうした状況に遭遇しても処理が落ちないように、例外処理を仕込むことが大切です。
たとえば、ファイルパスが正しいかどうかをチェックしたり、読み込めなかったときにはデフォルト画像を表示するなどの対策を講じることが実務的には求められます。
大量の画像を一括処理するときには、ループを使ってファイルを順番に読み込むケースが一般的です。
そのときに一つのファイルが壊れていると処理全体が停止してしまうリスクがあります。
こういったエラーを避けるには、try-except
構文で例外処理を適切に実装しておきましょう。
画像表示と組み合わせたい処理の例
画像表示の知識だけでも、ちょっとした自動化や業務効率アップが実現できる場合があります。
しかし、多くの場面では画像を表示するだけでなく、何らかの加工や解析を行うことになるでしょう。
顔や物体を検出してから結果を確認
OpenCVを使う場合、顔認識や物体認識の機能を組み込んだ後に結果を可視化したいケースがよくあります。
検出した箇所に枠線を描画して、それを cv2.imshow で見ながらデバッグすると便利です。
特に、データが正しく取れているかの確認作業の際に、画像表示は欠かせません。
複数画像の比較
Matplotlibの subplot
機能を活用すれば、複数の画像を1つのウィンドウに並べて表示できます。
たとえば、加工前と加工後の画像を左右に並べて見比べることで、変更点をすぐに把握できるでしょう。
こうしたビジュアル比較は、説明資料を作るときにも重宝します。
GUIアプリ開発の入り口
画像をプログラムで表示するというステップは、GUI(Graphical User Interface)アプリケーションの開発につながる入り口でもあります。
Pythonでは tkinter
や PyQt
といったGUIフレームワークが存在し、画面のボタンを押すと画像が切り替わるような仕組みも実装できます。
ただ、本格的なUI作成は少し難しくなるため、最初は画像表示に慣れてからステップアップすると良いかもしれません。
画像形式と拡張子の話
通常はJPEG(.jpg)やPNG(.png)で扱うことが多いですが、実務ではGIF(.gif)やBMP(.bmp)、TIFF(.tiff)など、さまざまな拡張子が登場する場合があります。
ライブラリや環境によっては対応していない形式もあるので、表示したい画像が対応範囲かどうかを事前に確認しておくと安心です。
また、アルファチャンネル(透明度)情報が含まれる画像の場合、PillowやMatplotlibを使うときにRGBではなくRGBAでデータが読み込まれることがあります。
このような細かい違いを理解しておくと、思わぬところでエラーが出るのを防げるでしょう。
この記事を読むとよくある疑問を解消できるかも
初心者の方は、次のような疑問を持つことが多いようです。
- どのライブラリを選べばいいかわからない
- 画像ファイルを指定しても表示されない、エラーが起きる
- Notebook環境と通常のPythonスクリプトで表示方法が違うのはなぜ?
- Matplotlibで軸がじゃまなので消したい
- OpenCVの色の順番がBGRと聞いたけど何が違うの?
この記事を通じて、それぞれのライブラリの特徴や基本的な画像表示の仕組みがイメージできるはずです。
もちろん、実際の開発現場ではさらに踏み込んだ画像処理や可視化テクニックが必要となる場面が多いでしょう。
まずは本記事の内容を足掛かりに、もう少し細かい操作へと進んでみてはいかがでしょうか。
トラブルシューティングの考え方
画像がうまく表示されない場合、まずはエラーメッセージを確認しましょう。
たとえば、ファイルが見つからないエラー(FileNotFoundError)ならパス指定が問題かもしれません。
仮にバージョン不一致が疑われるときは、pip show
や pip list
で現在インストールされているライブラリを確認してみるとヒントになる場合があります。
また、OpenCVでウィンドウが表示されるはずが真っ暗というケースでは、そもそも画像ファイルが壊れていたり、読み込み時の引数が誤っていることがあります。
こうしたときは、別のライブラリ(例:Pillow)で同じ画像を開いてみるなど、切り分け作業をしてみるのも手段の一つです。
まとめ
Pythonで画像を表示する手順は、使うライブラリごとに若干の違いはあるものの、初心者の方でも比較的理解しやすいでしょう。
Pillow、Matplotlib、OpenCVなど、それぞれのライブラリには得意分野があり、利用シーンによって使い分けるのがポイントです。
- Pillow:手軽な画像の読み込みや加工に適していて、初心者でもスムーズに扱える
- Matplotlib:データ可視化が中心のプロジェクトにおすすめ。画像とグラフを組み合わせた表示にも強い
- OpenCV:高度な画像処理や機械学習での応用を視野に入れるなら非常に便利
- IPython.display:Notebook環境でインライン表示を行う場合、効率的
これらを使いこなしながら、まずは画像を表示するところから始めてみてください。
実務では、サイズ変更や加工後の画像を確認したり、顔検出を実装して結果をデバッグしたりする機会が多いでしょう。
そのたびに必要な表示手段をうまく選べると、開発効率が向上します。
画像表示は、単純なようでいて奥深いテーマでもあります。
いろいろなライブラリの特性を知り、適材適所で活用することが、プロジェクトをスムーズに進める鍵になるのではないでしょうか。
どんな場面でも共通して、画像表示の仕組みを理解していれば、視覚的に結果を把握できるので安心感が高まるはずです。
今後は、色補正やフィルタリング、オブジェクト検出など、さらに実践的な要素に踏み込む機会も出てくるかと思います。
そのときに、本記事で紹介したライブラリの使い方が必ず役立つでしょう。
どうぞ、これを一つのきっかけにしてPythonでの画像処理の世界を楽しんでみてください。