0
我有两个灰度png。这些图像具有相同的宽度和高度。如何加速Python PIL图像过滤功能
例如:
我需要以如下方式来过滤这些图像:当从图像1的像素具有从255不同和值在相同的位置处的像素具有值不同于255我想将两个像素存储在两个单独的图像中(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循环,这会减慢我的代码的速度。每次运行我的程序时,必须使用此功能数百次。
感谢
输出继电器:
这是我的函数的输出: –
你可能想检查[Code Review](https://codereview.stackexchange.com/) – Tbaki