2つのグレースケールPNGがあります。これらの画像の幅と高さは同じです。Python PIL画像フィルタリング機能を高速化する方法
例えば:私は次のようにこれらの画像をフィルタリングする必要
:画像1からの画素255とは異なる値を有し、同じ位置の画素値を有する場合255とは異なる2つの別々のイメージ(imageFiltered1とimageFiltered2)に両方のピクセルを保存したい。両方のフィルタリングされた画像は、ImageChopsから掛け算して新しい画像を作成します。
これは私が一緒に引っ張らアルゴリズムである:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from PIL import Image, ImageChops
def makeCustomMultiply(image1, image2):
assert image1.size == image2.size
imageFiltered1 = Image.new(size=image1.size, mode='L', color=255)
imageFiltered2 = Image.new(size=image1.size, mode='L', color=255)
for eachY in xrange(0, imageFiltered1.size[1]):
for eachX in xrange(0, imageFiltered1.size[0]):
pixel1 = image1.getpixel((eachX, eachY))
pixel2 = image2.getpixel((eachX, eachY))
if pixel1 == 255 or pixel2 == 255:
imageFiltered1.putpixel((eachX, eachY), 255)
imageFiltered2.putpixel((eachX, eachY), 255)
else:
imageFiltered1.putpixel((eachX, eachY), pixel1)
imageFiltered2.putpixel((eachX, eachY), pixel2)
combo = ImageChops.multiply(imageFiltered1, imageFiltered2)
return combo
if __name__ == '__main__':
image1 = Image.open('image1.png')
image2 = Image.open('image2.png')
myCustomMultiply = makeCustomMultiply(image1, image2)
myCustomMultiply.save('myCustomMultiply.png')
をそれが基本的に示されていない白に対するグレー/黒乗算関数です。灰色から灰色のみが乗算されます。
何とかマイコードを改善できますか? 私のコードをかなり遅くするネストされたforループを避けたいと思います。この関数は、プログラムを実行するたびに何百回も使用されなければなりません。
おかげ
ouputを:から
使用するようにしてください。 –
[コードレビュー](https://codereview.stackexchange.com/)をチェックして、 – Tbaki