索引从图片中提取像素数据的代码的错误

我使用Python Imaging Library和Numpy运行以下代码,从图片中的特定感兴趣区域中提取像素数据 . 以下代码应该采用尺寸w乘以h的多张图片,切割宽度a(水平)和b(垂直)的边距,并创建仅包括边距内的像素数据的新矩阵 . 数据大小只是我想要迭代此过程的图片数量 .

但是,当我使用记事本在命令提示符下运行此命令时,提示符返回:

IndexError:索引982超出了轴0的大小为975的范围

关于如何修复此错误的任何想法?这些问题的常见解决方法是修正范围,但我发现我的范围没有任何问题(关于感兴趣的区域) . 谢谢:)

def edit_data(data_size,a,b):

    d = data_size
    sample_file = im.open("C:\Research\data_1\sample (1).jpg")
    w, h = sample_file.size
    print(w,h)

    gray_sample = np.zeros((d,(w-2*a),(h-2*a)))


    for i in range(0, d):
        file = im.open("C:\Research\data_1\sample (%d).jpg" % (i+1))

        for j in range(a, (w-a)):

            for k in range(b, (h-b)):
                r, g, b = file.getpixel((j, k))

                gray_sample[i][(j-a)][(k-b)] = (r*0.299 + g*0.587 + b*0.114)/255

    return gray_sample
#test the function
a = edit_data(1, 30, 30)
print(a.size)

回答(1)

2 years ago

我认为这个消息不能更明确 . 数组的一个维度是975,您的代码正在尝试访问982nd元素 . 我怀疑你可能在某处错误地使用x和y轴 .