Pillow(Python)でピクセルの色を取得する方法
PythonのPillowで画像の各ピクセルの色を取得する方法についてメモしておきます。
目次
サイズ変更
画像サイズが大きいと処理に時間がかかるのでサイズを小さくしておきます。
次のコードは幅と高さの長い方法を256ピクセルにします。
from PIL import Image
fn="sagamiko.jpeg"
img_src = Image.open(fn)
target_size = 256
haba, takasa = img_src.size
if haba > takasa:
w = target_size
h = target_size * takasa // haba
else:
w = target_size * haba // takasa
h = target_size
img_small = img_src.resize((w, h))
img_small.show()
fn="sagamiko.jpeg"
img_src = Image.open(fn)
target_size = 256
haba, takasa = img_src.size
if haba > takasa:
w = target_size
h = target_size * takasa // haba
else:
w = target_size * haba // takasa
h = target_size
img_small = img_src.resize((w, h))
img_small.show()
減色
減色については次のようにします。
次のコードは色の数を32色にします。
from PIL import Image
fn = "sagamiko.jpg"
img_src = Image.open(fn)
num_colors = 32
img_quantize = img_src.quantize(colors=num_colors, method=0, dither=1)
img_quantize.show()
fn = "sagamiko.jpg"
img_src = Image.open(fn)
num_colors = 32
img_quantize = img_src.quantize(colors=num_colors, method=0, dither=1)
img_quantize.show()
ピクセルの色を取得
ここからが本題です。
ピクセルの色を取るにはgetpixelを使います。引数には(x座標,y座標)をタプルで指定します。
色がRGBのタプルで返ります。
次のコードは画像の各ピクセルの色を二次元のリストcellsにセットしています。
(縦座標,横座標)になっている点に注意してください。
from PIL import Image
fn="sagamiko.jpg"
img_src = Image.open(fn)
w, h = img_src.size
cells=[]
for j in range(h):
parts=[]
for i in range(w):
rgb = img_src.getpixel((i, j))
parts.append(rgb)
cells.append(parts)
print(cells)
fn="sagamiko.jpg"
img_src = Image.open(fn)
w, h = img_src.size
cells=[]
for j in range(h):
parts=[]
for i in range(w):
rgb = img_src.getpixel((i, j))
parts.append(rgb)
cells.append(parts)
print(cells)
結果
[[(126, 154, 178), (128, 156, 180), (132, 158, 183), ...]]
[ 2022年8月5日 | カテゴリー: Python | タグ: Pillow ]
« JavaScriptで簡易的に形態素解析を行い文を検索する方法 | VSCodeのショートカットがおかしいときに試した方法 »
コメントを残す