目前我的代码加载图像成功,我认为这与问题无关。
接下来,我将会把彩色图像转换成一个名为rgb的np.array数组。
# convert image into array
rgb = np.array(img)
red = rgb[:,:,0]
green = rgb[:,:,1]
blue = rgb[:,:,2]
为了确保我对这个数组的理解没有问题,以防这可能是问题的根源,该数组是这样的:rgb[x坐标,y坐标,颜色通道],它保存了红、绿或蓝色的0-255之间的值。
然后,我的想法是编写一个嵌套的for循环来遍历我的图像中的所有像素(620px,400px),并根据绿色与蓝色和红色的比率对它们进行排序,以便单独识别出更绿的像素,并将所有其他像素设置为黑色或0。
for i in range(xsize):
for j in range(ysize):
color = rgb[i,j] <-- Index error occurs here
if(color[0] > 128):
if(color[1] < 128):
if(color[2] > 128):
rgb[i,j] = [0,0,0]
当我尝试运行时,出现了以下错误:
IndexError: index 400 超出了大小为 400 的轴 0 的范围
我原以为可能是我给 i 和 j 的限制有关,因此我尝试仅对图像的小部分进行排序,但仍然收到相同的错误。此时,我甚至不知道错误的根源,更不用说解决方法了。
numpy
中,行坐标y
先出现。请交换您的索引。 - Mark SetchellPIL / Pillow
,那么我的建议是im = Image.open("image.png").convert("HSL")
。 - Mark Setchell