gpt4 book ai didi

python - 使用Python字典编辑图像

转载 作者:行者123 更新时间:2023-12-01 05:10:33 24 4
gpt4 key购买 nike

首先,我是编程初学者,所以我可能会有愚蠢的问题;)

我创建了一个这样的字典:

cell = {(1,2):200,(1,2):200,(1,2):200,(1,2):200,...}

现在我使用 Image 来创建一个新图像。这个想法是使用 cell.keys() 例如 (1,2) 来访问图像的像素坐标并将值更改为键的值。我怎么能那样做呢?我尝试了这个“解包”,除了“无效语法”之外没有成功

cell = {}
for i in range (255):
for k in range (255):
cell.update({(i,k):random.randrange(1,150,2)})

img = Image.new('RGB',(255,255), 'WHITE')
pixels = img.load() # create the pixel map

for k in cell.keys():
pixels[*k] = (*k, cell[k]) # here I get the invalid syntax at '*k'

最佳答案

只需使用k作为键:

pixels[k] = k + (cell[k],)

您有一个 RGB 图像,因此您需要一个包含 3 个值的元组。 k 是一个具有两个 值的元组,因此我猜测您需要一个 (i, j, random_value) 元组作为像素值。

*k 仅适用于函数签名、调用和(在 Python 3 中)元组赋值。它在索引或创建元组文字中没有特殊含义。

请注意,将 dict.update() 与单元素字典一起使用是......低效的。只需使用项目分配即可:

cell = {}
for i in range(255):
for k in range(255):
cell[(i,k)] = random.randrange(1,150,2)

然而,字典并不是密集矩阵的最佳数据存储格式;最好使用嵌套列表:

cell = [[random.randrange(1,150,2) for _ in range(255)] for _ in range(255)]

并解决这个问题:

for i, row in enumerate(cell):
for j, value in enumerate(row):
pixels[i, j] = (i, j, value)

关于python - 使用Python字典编辑图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24326772/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com