ChatGPTにPythonを教えてもらう 画像処理(リサイズ、減色)
必要な物 Pythonの実行環境、VS Code
Pillowがインストールされていない場合 pip install Pillow
ChatGPTに画像のリサイズ、減色のプログラムを教えてもらった
from PIL import Image
import numpy as np
# 入力画像のパスと出力画像のパスを設定
input_path = 'input.png'
output_path = 'output_256_256_16col.png'
# 新しいサイズを設定
new_size = (256, 256)
# 減色する色数を設定
number_of_colors = 16
# 画像を開いてRGBモードに変換
image = Image.open(input_path).convert('RGB')
# 画像をリサイズ
resized_image = image.resize(new_size, Image.LANCZOS)
# リサイズされた画像を指定した色数で色量子化(減色)
quantized_image = \
resized_image.quantize(colors=number_of_colors, method=Image.Quantize.MEDIANCUT)
# 量子化された画像から一意な色を抽出して印刷
rgb_image = quantized_image.convert("RGB")
colors = np.unique(np.array(rgb_image).reshape(-1, 3), axis=0)
hex_colors = ["0x{:02x}{:02x}{:02x}".format(*rgb) for rgb in colors]
print(hex_colors)
# 量子化された画像を保存
quantized_image.save(output_path)
ChatGPTによるプログラムの解説
Pythonプログラムの各ステップの説明を日本語で記述します。
画像の読み込み:input.pngという画像ファイルを開いて、RGBモードに変換します。これにより、画像をRGBカラーモデルで扱うことができます。
画像のリサイズ:画像のサイズを256x256ピクセルに変更します。リサイズにはLanczosリサンプリングメソッドを使用しています。このメソッドは、画像の質を維持するのに適しています。
カラー量子化:画像のカラーパレットを指定された色数(255色)に削減します。ここで使用されているメソッドはメディアンカットアルゴリズムで、色の出現頻度が似ている領域にカラーを分割します。
色の抽出と印刷:量子化された画像を再びRGB形式に変換して、ユニークな色を抽出します。それらの色は、画像から配列に変換し、ユニークな値を取得して16進数形式で印刷します。
画像の保存:変更された画像を新しいファイル名(output_256_256_16col.png)で保存します。
input_path、output_path、new_size、number_of__colors を適宜変更して使用してください。
このプログラムは画像処理の基本的な手順をカバーしており、PILライブラリ(Python Imaging Library)を活用しています。
以上、エラーもすぐ教えてくれるのでプログラミング(の実行)が楽しい
この記事が気に入ったらサポートをしてみませんか?