我使用Python Imaging Library和Numpy运行以下代码,从图片中的特定感兴趣区域中提取像素数据。以下代码应该采用尺寸w乘以h的多张图片,切割宽度a(水平)和b(垂直)的边距,并创建仅包括边距内的像素数据的新矩阵。数据大小只是我想要迭代此过程的图片数量。
但是,当我使用Notepad ++在命令提示符下运行时,提示符返回:
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)
答案 0 :(得分:0)
我认为这个消息不能更明确。数组的一个维度是975,您的代码正在尝试访问982nd元素。我怀疑你可能在某处错误地使用 x 和 y 轴。