Pythonで画像処理入門:初心者でも簡単!画像の世界を広げよう
Pythonは、そのシンプルで読みやすい構文と豊富なライブラリのおかげで、画像処理分野でも非常に人気のあるプログラミング言語です。この記事では、Pythonを使った画像処理の基礎を、初心者の方にもわかりやすく解説します。
1. なぜPythonで画像処理?
Pythonで画像処理を行うメリットはたくさんあります。
- 豊富なライブラリ: 画像処理に必要な機能を提供するライブラリが充実しています。
- シンプルな構文: プログラミング初心者でも理解しやすい構文で、コードを書くことができます。
- 活発なコミュニティ: 困ったことがあれば、オンラインで情報を得やすく、解決策を見つけやすいです。
- クロスプラットフォーム: Windows、macOS、Linuxなど、さまざまなOSで動作します。
2. 必須ライブラリ:PIL/Pillow
Pythonで画像処理を行う上で最も重要なライブラリの一つが、PIL (Python Imaging Library) です。しかし、PILはすでに開発が終了しており、現在はその後継である Pillow を使用するのが一般的です。
Pillowは、画像の読み込み、保存、形式変換、基本的な画像処理機能などを提供します。
インストール方法:
コマンドプロンプトまたはターミナルで以下のコマンドを実行して、Pillowをインストールします。
pip install Pillow
3. Pillowを使った基本的な画像処理
Pillowを使って、実際に画像を操作してみましょう。
3.1 画像の読み込みと表示
from PIL import Image
# 画像ファイルを読み込む
image = Image.open("sample.jpg")
# 画像の表示
image.show()
このコードは、sample.jpg
という画像ファイルを読み込み、新しいウィンドウで表示します。Image.open()
関数は、画像ファイルを読み込んでImageオブジェクトを作成します。image.show()
関数は、画像を一時的なファイルに保存し、それをシステムのデフォルトの画像ビューアで開きます。
3.2 画像サイズの取得
from PIL import Image
image = Image.open("sample.jpg")
# 画像の幅と高さを取得
width, height = image.size
print(f"画像の幅: {width}px")
print(f"画像の高さ: {height}px")
このコードは、画像の幅と高さを取得し、コンソールに出力します。image.size
属性は、画像の幅と高さをタプルとして返します。
3.3 画像の回転
from PIL import Image
image = Image.open("sample.jpg")
# 画像を90度回転
rotated_image = image.rotate(90)
# 回転後の画像を表示
rotated_image.show()
# 回転後の画像を保存
rotated_image.save("rotated_sample.jpg")
このコードは、画像を90度回転させ、その結果を表示し、新しいファイルとして保存します。image.rotate()
関数は、画像を反時計回りに指定された角度だけ回転させます。rotated_image.save()
関数は、画像を新しいファイルとして保存します。
3.4 画像のリサイズ
from PIL import Image
image = Image.open("sample.jpg")
# 画像をリサイズ
resized_image = image.resize((200, 150)) # 幅200px, 高さ150px
# リサイズ後の画像を表示
resized_image.show()
# リサイズ後の画像を保存
resized_image.save("resized_sample.jpg")
このコードは、画像のサイズを変更し、その結果を表示し、新しいファイルとして保存します。image.resize()
関数は、画像を指定された幅と高さにリサイズします。
3.5 画像の切り抜き
from PIL import Image
image = Image.open("sample.jpg")
# 切り抜き範囲を指定 (左上のx, 左上のy, 右下のx, 右下のy)
crop_area = (100, 100, 300, 200)
# 画像を切り抜き
cropped_image = image.crop(crop_area)
# 切り抜き後の画像を表示
cropped_image.show()
# 切り抜き後の画像を保存
cropped_image.save("cropped_sample.jpg")
このコードは、画像の一部を切り抜き、その結果を表示し、新しいファイルとして保存します。image.crop()
関数は、指定された範囲の画像を切り抜きます。切り抜き範囲は、左上のx座標、左上のy座標、右下のx座標、右下のy座標の4つの値を持つタプルで指定します。
4. その他のライブラリ
Pillow以外にも、Pythonには様々な画像処理ライブラリがあります。
- OpenCV: より高度な画像処理やコンピュータビジョンのためのライブラリ。顔認識、物体検出などに使われます。
- scikit-image: 科学的な画像解析のためのライブラリ。画像セグメンテーション、特徴抽出などに使われます。
5. まとめ
PythonとPillowを使えば、画像の読み込み、表示、回転、リサイズ、切り抜きといった基本的な画像処理を簡単に行うことができます。さらに、OpenCVやscikit-imageといったライブラリを使えば、より高度な画像処理も可能です。
画像処理の世界は奥深く、様々な応用が可能です。ぜひPythonを使って、画像処理の可能性を探求してみてください。まずは簡単な処理から始め、徐々にステップアップしていくのがおすすめです。
コラム一覧
◯for文
◯関数
◯配列
◯文字列
◯正規表現
◯ファイル入出力
◯openpyxl
◯Numpy
◯Matplotlib
◯Pandas
◯scikit-learn
◯seaborn
◯beautifulsoup
◯tkinter
◯OpenCV
◯pygame
◯メイン関数
◯自作ライブラリ
◯画像処理
◯機械学習
◯スクレイピング
◯データ分析
◯グラフ作成
◯API
◯可読性
◯デバッグ
◯例外処理
◯コメント
◯組み込み関数
◯flask
◯学び方
◯ビット演算
◯マルチスレッドプログラミング
◯参照渡し
◯pyenv
◯エディタ
◯生成AI
◯画像認識
◯Streamlit
◯lambda式
◯物理演算シミュレーション
◯命名規則
◯遺伝的アルゴリズム
◯関数型プログラミング
◯オブジェクト指向
◯ツリー図