Python 为什么numpy阵列中的颜色替换过程永远不会结束

Python 为什么numpy阵列中的颜色替换过程永远不会结束,python,image,numpy,image-processing,Python,Image,Numpy,Image Processing,我正在使用Python中的imageio库读取.gif图像(该库将.gif格式读取为帧列表,每个帧都是numpy数组)。我想用某个固定颜色替换.gif图像中的所有RGB颜色(以后可能使用if语句来更改图像的某些部分) 数据的形式类似于[[23 234 23 24],[34,46,57 255] 这是我的代码: gifimage = imageio.mimread(inputgif) for x in range(len(gifimage)): shape = gifimage[x].shap

我正在使用Python中的imageio库读取.gif图像(该库将.gif格式读取为帧列表,每个帧都是numpy数组)。我想用某个固定颜色替换.gif图像中的所有RGB颜色(以后可能使用if语句来更改图像的某些部分)

数据的形式类似于
[[23 234 23 24],[34,46,57 255]

这是我的代码:

gifimage = imageio.mimread(inputgif)
for x in range(len(gifimage)):
  shape = gifimage[x].shape
  for l in range(0, shape[0]):
    for y in range(0, shape[1]):
      gifimage[x][l][y] = [50, 205, 50, 255] #255 is just the alpha channel which I can ignore.
还尝试:

for x in range(len(gifimage)):
  shape = gifimage[x].shape
  for l in range(0, shape[0]):
    for y in range(0, shape[1]):
      gifimage[x][l][y][0] = 50
      gifimage[x][l][y][1] = 205
      gifimage[x][l][y][2] = 50
      gifimage[x][l][y][2] = 255

但当我运行它时,它永远不会结束。为什么会这样?

首先,您可以消除一些For循环。如果只想将所有像素重新指定为一种颜色,可以执行以下操作:

gifimage[:][:][:] = [50, 205, 50, 255]

为了确保我的理解,这会将每个像素更改为灰绿色。

谢谢!这就是我要找的。现在我可以用if语句来替换我想要的语句,但我也想知道为什么for循环不起作用?