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

Python 3.x 从图片中提取像素数据的代码的索引错误,python-3.x,image-processing,matrix,Python 3.x,Image Processing,Matrix,我使用PythonImaging库和Numpy运行以下代码,从图片中的特定感兴趣区域提取像素数据。下面的代码将拍摄多张尺寸为w×h的照片,按宽度a(水平)和b(垂直)的边距切割,并创建一个新的矩阵,该矩阵仅包含边距内的像素数据。数据大小只是我想要迭代这个过程的图片数量 但是,当我使用Notepad++在命令提示符下运行此命令时,提示符将返回: 索引器:索引982超出大小为975的轴0的界限 有没有关于如何修复此错误的想法?这些问题的常见解决方案是固定范围,但我的范围(关于感兴趣的领域)没有发现任

我使用PythonImaging库和Numpy运行以下代码,从图片中的特定感兴趣区域提取像素数据。下面的代码将拍摄多张尺寸为w×h的照片,按宽度a(水平)和b(垂直)的边距切割,并创建一个新的矩阵,该矩阵仅包含边距内的像素数据。数据大小只是我想要迭代这个过程的图片数量

但是,当我使用Notepad++在命令提示符下运行此命令时,提示符将返回:

索引器:索引982超出大小为975的轴0的界限

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


我认为这个信息再清楚不过了。数组的一维是975,代码试图访问982元素。我怀疑你可能把x轴和y轴绕错了方向。

谢谢你的建议!实际上,我在声明gray_样本变量的numpy数组时犯了一个错误:)
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)