あなたがコンピューター ビジョン、画像認識、画像処理、機械学習の分野の開発者であれば、Python は間違いなくあなたの親友です。Python エコシステムは、画像処理やコンピューター ビジョンに適した TensorFlow、Keras、PyTorch、Numpy、Pillow、OpenCV などの機械学習、データ分析、コンピューター ビジョン ライブラリの豊富なセットを提供します。
この記事では、Python と Pillow ライブラリの使い方、OpenCV でさまざまな画像を適切に扱う方法を説明します。
Pillow ライブラリをインストールする
いつものように、Pillow ライブラリを使用したい場合は、まずそれをインストールする必要があります。次のコマンドはコマンド ラインで実行できます。
pip install Pillow
画像をインポートして表示する
Python で画像ファイルを開くのは非常に簡単です。 たとえば、Pillow ライブラリのImage
クラスと メソッドを使用するだけです 。show()
from PIL import Image
# 导入图像文件
img = Image.open("img.jpg")
# 显示图像
img.show()
画像の拡大縮小とリサンプル
画像のスケーリングとリサンプリングは、画像処理における最も基本的な操作の 1 つです。最も一般的なスケーリングとリサンプリングの 2 つの手法は、画像を縮小してピクセルを削除することと、画像を線形補間して画像を拡大することです。
Pillow ライブラリには、 resize()
このプロセスを実装するためのメソッドが用意されています。
image = Image.open("img.jpg")
# 将图像大小变为原来大小的一半
image = image.resize((int(image.width/2), int(image.height/2)))
# 改变图像大小,宽变为100,高按比例缩放
new_image = image.resize((100, int(image.height / image.width * 100)))
クロップ画像
画像のトリミングとは、元の画像から何かを削除することを意味します。この操作は、ガベージ イメージ内の無関係な領域を削除するなど、非常に一般的です。これは、 Pillow ライブラリの関数を使用して crop()
実行できます。
次の例では、サイズ (200, 200) のセットの中心を正方形にトリミングする方法を示します。
img = Image.open("img.jpg")
width, height = img.size
new_width = new_height = 200
x = (width - new_width) / 2
y = (height - new_height) / 2
img = img.crop((x, y, x + new_width, y + new_height))
画像の明るさ、コントラスト、彩度を調整します
画像の明るさ、コントラスト、彩度を調整することは、画像処理における一般的な操作方法です。OpenCV ライブラリには、このタスクを実行できるいくつかの関数が用意されています。最も一般的な関数は と cv2.cvtColor()
です cv2.addWeighted()
。cv2.cvtColor()
この関数はカラー チャネルを設定するために使用され、 cv2.addWeighted()
関数は 2 つの画像を追加し、指定された重みでそれらをブレンドするために使用されます。
Image.open('img.jpg')
img = img.convert('HSV')
brightness_multiplier = 1.2
saturation_multiplier = 1.1
# 调整亮度和饱和度
img = ImageEnhance.Brightness(img).enhance(brightness_multiplier)
img = ImageEnhance.Color(img).enhance(saturation_multiplier)
img.show()
画像をイコライズする
画像ヒストグラム等化は、画像のコントラストを改善できる技術です。他の画像処理技術と比較して、このプロセスは数秒で完了する非常にシンプルなプロセスです。OpenCV ライブラリは cv2.equalizeHist()
この操作を実装する関数を提供しますが、Pillow ライブラリを使用するには、まず画像をグレースケールに変換してから、それに応じて処理する必要があります。
# 使用Pillow进行灰度处理
img = Image.open('img.jpg')
gray = img.convert('L')
# 调用Pillow直方图均衡函数
eq = ImageOps.equalize(gray)
要約する
Pillow ライブラリは、画像に対してさまざまな操作を実行するために使用できる多くの便利な関数を提供します。たとえば、Pillow を使用すると、画像の拡大縮小、明るさと彩度の調整、ヒストグラムの均等化、さらには画像上にさまざまな形状、フォント、色、線などを描画することもできます。Pillow ライブラリと比較して、OpenCV ライブラリは画像処理においてより強力です。関数は多数の画像処理およびコンピュータ ビジョン関数をサポートしており、これらの関数は比較的安定していて信頼性があります。このチュートリアルが、Python での画像処理とコンピューター ビジョンについて新たな視点を与えてくれれば幸いです。