Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Python字典编辑图像_Python_Image_Dictionary - Fatal编程技术网

使用Python字典编辑图像

使用Python字典编辑图像,python,image,dictionary,Python,Image,Dictionary,首先,我是编程新手,所以我可能会有一些愚蠢的问题;) 我创建了一本这样的词典: cell = {(1,2):200,(1,2):200,(1,2):200,(1,2):200,...} 现在我用图像创建了一个新的图像。其思想是使用cell.keys()例如(1,2)来访问图像的像素坐标,并将值更改为键的值。我怎么能这么做?我尝试了这个“解包”,除了“无效语法”之外没有成功 只需使用k作为键: pixels[k] = k + (cell[k],) 您有一个RGB图像,因此需要一个具有3个值的元

首先,我是编程新手,所以我可能会有一些愚蠢的问题;)

我创建了一本这样的词典:

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


只需使用
k
作为键:

pixels[k] = k + (cell[k],)
您有一个RGB图像,因此需要一个具有3个值的元组
k
是一个具有两个值的元组,因此我猜您需要一个
(I,j,random_值)
元组作为像素值

*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)

“无效语法”在哪一行?在“*k”@LutzHorn的最后一行可能在第四行:
{(i,k):random.randrange(1150,2)}
@utdemir:很好。@MartijnPieters;我的错,我不认为那是一个简单的字面上的口述,我认为那是某种口述理解的尝试。:)啊!!非常感谢。放置像素[k]=(k,单元格[k],)会出现以下错误:TypeError:函数至少接受3个参数(给定2个)@user3759978:该值不是嵌套元组。这取决于图像模式,该值应设置为什么。@user3759978:我看到您有一个
'RGB'
(3波段)图像,所以您需要在这里使用一个包含三个值的元组。我必须坚持使用字典,因为这是我的主管的要求;)好主意^^是的,你的回答很有帮助;)
for i, row in enumerate(cell):
    for j, value in enumerate(row):
        pixels[i, j] = (i, j, value)