提取子矩阵时的问题

时间:2013-10-29 15:12:56

标签: python numpy matrix scipy submatrix

我正在编写一段代码来从矩阵中提取子矩阵。作为模块,我导入了scipy和Image。当我运行脚本时,我收到了错误

submatrix = im[x_min:x_max, y_min:y_max]
TypeError: an integer is required

我检查过,最小值和最大值实际上是整数...你对如何解决这个问题有任何建议吗?

x_min = int(x - 50)
x_max = int(x + 50)
y_min = int(y - 50)
y_max = int(y + 50)
if x_min < 0:
    x_min = 0
    continue
if y_min < 0:
    y_min = 0
    continue
if x_max > 2160:
    x_max = 2160
    continue
if y_max > 2592:
    y_max = 2592
    continue
submatrix = im[x_min:x_max, y_min:y_max]
figure(1)
imshow(submatrix)
break

1 个答案:

答案 0 :(得分:3)

如果您使用import Image,那么您的im对象不是一个numpy数组,而是一个PixelAccess对象。
因此,如果你真的想要一个numpy数组,你可以使用imread而不是Image.open

最小的例子(x_min等为int)将是

import matplotlib.pyplot as plt
im = plt.imread("/...image_%03i.tif" % (index))
submatrix = im[x_min:x_max, y_min:y_max]
plt.figure(1)
plt.imshow(submatrix)
plt.show()