我不是想让任何人做我的作业,我只是在为某个特定问题而苦苦挣扎,而且到目前为止,我还没有在网上找到任何信息。因此,此问题的目的是创建一个包含9张图像的接触纸,其中每张图像中像素的强度均发生变化。为了进一步说明,三个图像的第一行是红色通道,其中红色像素的强度乘以系数0.1、0.5或0.9,以便最蓝色的图像位于最左边(或红色通道的强度最低)。接下来的两行是绿色和蓝色通道,其强度在整个行中都如上所述。我已经设置了9张图像的联系表,但是很难改变图像的色彩强度。
我正在使用PIL库,似乎Image.getpixel(),Image.putpixel(),Image.split()或Image.point()方法可能会有所帮助,但我只是不理解如何使用它们,或从哪里开始。
我为图像的强度定义了一个函数,现在我只是在根据需要更改颜色时遇到麻烦。任何帮助,将不胜感激。我刚刚开始学习如何使用python进行编码,并希望继续学习和提高自己的技能。
更新:我已经取得了一些进步,但是即使我遍历了不同的颜色,我的所有图像都是青色的。该代码运行良好,因此是语法错误,但我似乎无法弄清楚哪里出了问题。
import PIL
from PIL import Image, ImageDraw, ImageFont
from PIL import ImageEnhance
# read image and convert to RGB
image=Image.open("readonly/msi_recruitment.gif")
image=image.convert('RGB')
images=[]
imglst = [[1, 2, 3], [1, 2, 3], [1, 2, 3]]
def intensity(intn):
if intn==1:
return .1
elif intn==2:
return .5
elif intn==3:
return .9
pixels=image.load()
for channel in imglst:
for intn in channel:
for x in range(image.width):
for y in range(image.height):
current_color = image.getpixel((x,y))
r, g, b = current_color
if imglst.index(channel) == 0:
r = r * intensity(intn)
new_color = (int(r), g, b)
elif imglst.index(channel) == 1:
g = g * intensity(intn)
new_color = (r, int(g), b)
elif imglst.index(channel) == 2:
b = b * intensity(intn)
new_color = (r, g, int(b))
image.putpixel((x,y), new_color)
images.append(image)