Python画像処理ライブラリPILのImageChopsモジュールの概要
Introduction Imagechops Module Python Image Processing Library Pil
ImageChopsモジュールには、チャネル操作(「チョップ」)と呼ばれるいくつかの算術グラフィック操作が含まれています。これらの操作は、画像効果、画像合成、アルゴリズム描画など、さまざまな目的に使用できます。
ほとんどのチャネル操作は、8ビット画像(「L」モードや「RGB」モードなど)にのみ使用されます。
まず、ImageChopsモジュールの機能
ほとんどのチャネル操作には、新しい画像を返す1つまたは2つの画像パラメータがあります。
1、定数
定義:定数(画像、値)⇒画像
意味:指定されたピクセル値で満たされた、指定された画像と同じサイズのレイヤーを返します。
例:
>>> im02 = Image.open( 'D:\ Code \ Python \ test \ img \ test02.jpg')
>>> im02.mode
「RGB」
>>> im02.getpixel((0,0))
(124、127、108)
>>> im = ImageChops.constant(im02、100)
>>> im.mode
「」
>>> im.getpixel((0,0))
100
>>> im.getpixel((100,100))
100
画像02は「RGB」画像です。メソッドconstant()は1つのレイヤーのみを返します。つまり、画像のimモードは「L」であり、すべての値に100が与えられます。
2、複製
定義: 複製 (画像)⇒画像
意味:指定された画像のコピーを返します。
例:
>>> PILからImageChopsをインポートします
>>> im02 = Image.open( 'D:\ Code \ Python \ test \ img \ test02.jpg')
>>> im02.mode
「RGB」
>>> im02.getpixel((100,100))
(147、149、128)
>>> im = ImageChops.duplicate(im02)
>>> im.mode
「RGB」
>>> im.getpixel((100,100))
(147、149、128)
3、反転
定義:invert(image)⇒image
意味:最大値255から現在の値を引いた画像を返します。
例:
>>> im02 = Image.open( 'D:\ Code \ Python \ test \ img \ test02.jpg')
>>> im02.mode
「RGB」
>>> im02.getpixel((100,100))
(147、149、128)
>>> im = ImageChops.invert(im02)
>>> im.mode
「RGB」
>>> im.getpixel((100,100))
(108、106、127)
画像imは次のとおりです。
4、ライター
定義: ライター (画像1、画像2)⇒画像
意味: ピクセルごとの比較では、新しい画像のピクセル値として大きい方の値が選択されます。
例:
>>> im01 = Image.open( 'D:\ Code \ Python \ test \ img \ test01.jpg')
>>> im02 = Image.open( 'D:\ Code \ Python \ test \ img \ test02.jpg')
>>> im = ImageChops.lighter(im01、im02)
>>> im01.getpixel((100,100))
(42、131、211)
>>> im02.getpixel((100,100))
(147、149、128)
>>> im.getpixel((100,100))
(147、149、211)
画像imは次のとおりです。
5、暗い
定義:darker(image1、image2)⇒image
意味:ピクセルごとの比較では、新しい画像のピクセル値として小さい値を選択します。
例:
>>> PILからImageChopsをインポートします
>>> im01 = Image.open( 'D:\ Code \ Python \ test \ img \ test01.jpg')
>>> im02 = Image.open( 'D:\ Code \ Python \ test \ img \ test02.jpg')
>>> im = ImageChops.darker(im01、im02)
>>> im01.getpixel((100,100))
(42、131、211)
>>> im02.getpixel((100,100))
(147、149、128)
>>> im.getpixel((100,100))
(42、131、128)
画像imは次のとおりです。
6、違い
定義: 差 (画像1、画像2)⇒画像
意味:2つの画像の絶対値によって形成された画像をピクセルごとに返します。
例:
>>> PILからImageChopsをインポートします
>>> im01 = Image.open( 'D:\ Code \ Python \ test \ img \ test01.jpg')
>>> im02 = Image.open( 'D:\ Code \ Python \ test \ img \ test02.jpg')
>>> im = ImageChops.difference(im01、im02)
>>> im01.getpixel((100,100))
(42、131、211)
>>> im02.getpixel((100,100))
(147、149、128)
>>> im.getpixel((100,100))
(105、18、83)
画像imは次のとおりです。
7、掛ける
定義: かける (画像1、画像2)⇒画像
意味:2つの画像を重ね合わせます。真っ黒な画像を掛けると、結果は黒になります。真っ白な画像を掛けた場合、結果は未定義です。
out = image1 * image2 / MAX
例:
>>> PILからImageChopsをインポートします
>>> im01 = Image.open( 'D:\ Code \ Python \ test \ img \ test01.jpg')
>>> im02 = Image.open( 'D:\ Code \ Python \ test \ img \ test02.jpg')
>>> im = ImageChops.multiply(im01、im02)
>>> im01.getpixel((100,100))
(42、131、211)
>>> im02.getpixel((100,100))
(147、149、128)
>>> im.getpixel((100,100))
(24、76、105)
画像imは次のとおりです。
8、画面
定義:screen(image1、image2)⇒image
意味:2つの反転した画像を重ね合わせます。
out = MAX-((MAX-image1)*(MAX-image2)/ MAX)
例:
>>> im01 = Image.open( 'D:\ Code \ Python \ test \ img \ test01.jpg')
>>> im02 = Image.open( 'D:\ Code \ Python \ test \ img \ test02.jpg')
>>> im = ImageChops.screen(im01、im02)
>>> im01.getpixel((100,100))
(42、131、211)
>>> im02.getpixel((100,100))
(147、149、128)
>>> im.getpixel((100,100))
(165、204、234)
画像imは次のとおりです。
9、追加
定義:add(image1、image2、scale、offset)⇒image
意味:2つの画像が対応するピクセル値に追加され、次に変数オフセットで除算され、変数オフセットが追加されます。省略した場合、可変スケールは1.0、可変オフセットは0.0です。
out =(image1 + image2)/スケール+オフセット
例:
>>> PILからImageChopsをインポートします
>>> im01 = Image.open( 'D:\ Code \ Python \ test \ img \ test01.jpg')
>>> im02 = Image.open( 'D:\ Code \ Python \ test \ img \ test02.jpg')
>>> im = ImageChops.add(im01、im02)
>>> im01.getpixel((100,100))
(42、131、211)
>>> im02.getpixel((100,100))
(147、149、128)
>>> im.getpixel((100,100))
(165、204、234)
画像imは次のとおりです。
10、減算
定義: 減算 (image1、image2、scale、offset)⇒画像
意味:2つの画像が対応するピクセル値から減算され、変数オフセットで除算され、変数オフセットが追加されます。省略した場合、可変スケールは1.0、可変オフセットは0.0です。
out =(image1 -image2)/スケール+オフセット
例:
>>> PILからImageChopsをインポートします
>>> im01 = Image.open( 'D:\ Code \ Python \ test \ img \ test01.jpg')
>>> im02 = Image.open( 'D:\ Code \ Python \ test \ img \ test02.jpg')
>>> im = ImageChops.subtract(im01、im02)
>>> im01.getpixel((100,100))
(42、131、211)
>>> im02.getpixel((100,100))
(147、149、128)
>>> im.getpixel((100,100))
(0、0、83)
画像imは次のとおりです。
11、ブレンド
定義: ブレンド (画像1、画像2、アルファ)⇒画像
意味:Imageモジュールの関数blend()と同様に、2つの画像は変数alphaに従って結合されます。
例:
>>> PILからImageChopsをインポートします
>>> im01 = Image.open( 'D:\ Code \ Python \ test \ img \ test01.jpg')
>>> im02 = Image.open( 'D:\ Code \ Python \ test \ img \ test02.jpg')
>>> im = ImageChops.blend(im01、im02、0.7)
画像imは次のとおりです。
12、コンポジット
定義: 複合 (画像1、画像2、マスク)⇒画像
意味:Imageモジュールの関数composite()と同様に、2つの画像は変数マスクに従って結合されます。可変マスクのモードは、「1」、「L」、または「RGBA」です。これらの3つのパラメーターのサイズは同じでなければなりません。
例:
>>> PILからImageChopsをインポートします
>>> im01 = Image.open( 'D:\ Code \ Python \ test \ img \ test01.jpg')
>>> im02 = Image.open( 'D:\ Code \ Python \ test \ img \ test02.jpg')
>>> r、g、b = im01.split()
>>> im_r = ImageChops.composite(im01、im02、r)
>>> im_g = ImageChops.composite(im01、im02、g)
>>> im_b = ImageChops.composite(im01、im02、b)
画像im_rは次のとおりです。
画像im_gは次のとおりです。
画像im_bは次のとおりです。
13、オフセット
定義:offset(image、xoffset、yoffset)⇒image
オフセット(画像、オフセット)⇒画像
意味:変数offsetに従って画像データがオフセットされた画像を返します。データはエッジをラップします。変数yoffsetがデフォルトの場合、変数xoffsetと同じであると見なされます。
例:
>>> PILからImageChopsをインポートします
>>> im01 = Image.open( 'D:\ Code \ Python \ test \ img \ test01.jpg')
>>> im = ImageChops.offset(im01、200、300)
画像imは画像im01の左上隅を座標(200、300)に移動し、境界を超えた右端は左に移動し、境界を超えた下端は上に移動します。画像imは次のとおりです。