処理の例では、さまざまな色のセットを持つ画像が使用されます。
開始するには、2つのライブラリモジュールが必要です。
from PIL import Image, ImageDraw
快適な将来の作業のためのツールをセットアップします。
image = Image.open('test.jpg') # draw = ImageDraw.Draw(image) # width = image.size[0] # height = image.size[1] # pix = image.load() #
さあ始めましょう
RGB形式の画像を処理します。 PILは、フォーマット1、L、P、RGB、RGBA、CMYK、YCbCr、LAB、HSV、I、Fの使用もサポートしています。
画像のピクセル値は次の形式で設定されます: (x、y)、(red、green、blue) 、 x、yは座標、RGBの数値は0から255の範囲です。つまり、 8ビット画像で作業します。
グレースケール
すべてのカラーパレットが等しい場合、灰色の色合いが表示されるため、3つのポイントすべてで算術平均値を取得する必要があります。
for x in range(width): for y in range(height): r = pix[x, y][0] # g = pix[x, y][1] # b = pix[x, y][2] # sr = (r + g + b) // 3 # draw.point((x, y), (sr, sr, sr)) # image.save("result.jpg", "JPEG") #
わずかなニュアンス
反転
反転は、255から現在の色を減算することによって取得されます。
for x in range(width): for y in range(height): r = pix[x, y][0] g = pix[x, y][1] b = pix[x, y][2] draw.point((x, y), (255 - r, 255 - g, 255 - b))
グレースケール反転
前述の2つのアルゴリズムを組み合わせて、次のコードを記述できます。
for x in range(width): for y in range(height): r = pix[x, y][0] g = pix[x, y][1] b = pix[x, y][2] sr = (r + g + b) // 3 draw.point((x, y), (255 - sr, 255 - sr, 255 - sr))
選択的グレースケール反転
このアルゴリズムの場合、しきい値を決定する必要があります。これは100で使用します。
for x in range(width): for y in range(height): r = pix[x, y][0] g = pix[x, y][1] b = pix[x, y][2] if (r+g+b)>100: # 100 , sr = (r + g + b) // 3 draw.point((x, y), (255-sr, 255-sr, 255-sr)) else: # sr = (r + g + b) // 3 draw.point((x, y), (sr, sr, sr))
おわりに
次の記事では、画像処理アルゴリズムにおけるDFSの興味深い可能性を示すだけでなく、画像フィルターを領域に分割することにより、より局所的にアプローチする方法についてお話したいと思います。