我正在实施一份研究论文作为我的项目。我正在做的是我正在制作一个新的图像,并为每个像素分配一个RGB值。基本上我要做的是创建块并为这些块分配一些RGB值。当我手动更改值时,它可以正常工作并生成所有块。但是当我使用列表尝试这个时,它会说列表索引超出范围。
img = np.zeros((280,280,3), np.uint8) #new image
pixs=70 #number of pixels
l=[208,121,123,156,189,245,255,111,123,125,125,121,131,212] #list of values of R
i=0
for k in range(img.shape[0]):
for g in range(img.shape[1]):
img[k:k+(pixs-1), g:g+(pixs-1)] = (l[i],32,144)
i=i+1
这里我正在制作块并为它们分配RGB值。请指导我错误的地方,因为我第一次使用python
答案 0 :(得分:0)
您不清楚尝试使用切片分配实现什么,但是您提到的错误原因现在很清楚:分析i
的值。 i
最初设置为0
,并在内循环的每次迭代中递增1。循环遍历每个像素(因为range(img.shape[0])
将迭代0 .. img.shape[0]-1
之间的每个整数)。该图片包含280*280 == 784000
像素,因此i
相当于l
的长度变得非常快,这会使l[i]
上的索引超出边界误差。
看到你的代码后,我认为你想设置pixs*pixs
大小的块的颜色。为此,您必须更改k
和g
的步骤,例如:range(0, img.shape[0], pixs)
(产生0,像素,2 *像素......)。如果这样做,它仍然无效,因为图像中有16个(==(280/70)** 2)块,但l
中只有14个值。