使用python进行颜色编码加密

时间:2016-03-23 22:13:27

标签: python

我正在实施一份研究论文作为我的项目。我正在做的是我正在制作一个新的图像,并为每个像素分配一个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

1 个答案:

答案 0 :(得分:0)

您不清楚尝试使用切片分配实现什么,但是您提到的错误原因现在很清楚:分析i的值。 i最初设置为0,并在内循环的每次迭代中递增1。循环遍历每个像素(因为range(img.shape[0])将迭代0 .. img.shape[0]-1之间的每个整数)。该图片包含280*280 == 784000像素,因此i相当于l的长度变得非常快,这会使l[i]上的索引超出边界误差。

看到你的代码后,我认为你想设置pixs*pixs大小的块的颜色。为此,您必须更改kg的步骤,例如:range(0, img.shape[0], pixs)(产生0,像素,2 *像素......)。如果这样做,它仍然无效,因为图像中有16个(==(280/70)** 2)块,但l中只有14个值。