1.きっかけ
前の記事の続き
元画像の例
RGB画像
セグメンテーション画像
2.実装
from PIL import Image
import numpy as np
# 画像ファイルを読み込む
img = Image.open("hoge_segmentation.png")
img_rgb = Image.open("hoge_rgb.jpg")
# パレットモードかどうか判定する
if img.mode != "P":
print("画像がパレットモードではありません")
exit()
# パレットを読み込み出力用画像を生成
palette = img.getpalette()
img_output = Image.new("RGBA", size=img.size)
# 色を取得
w, h = img.size
colors = set()
for y in range(h):
for x in range(w):
colors.add(img.getpixel((x,y)))
print(colors)
# outputに色ごとに出力
pixels = img_rgb.load()
for color in colors:
for y in range(h):
for x in range(w):
color_pixel = img.getpixel((x, y))
if color_pixel != color:
r ,g, b = pixels[x,y]
img_output.putpixel((x,y),(r, g, b, 0))
if color_pixel == color:
r, g, b = pixels[x,y]
img_output.putpixel((x,y),(r, g, b, 255))
# 画像の保存
img_output.save(f"output_sample_{color}.png")