2013-10-29 93 views
2

我在寫一段代碼從矩陣中提取子矩陣。作爲模塊,我導入了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 
+0

我想'im'是numpy的數組? – Jakob

+0

是的,它是通過讀取圖像獲得的矩陣:image = Image.open(「/ ... image_%03i.tif」%(index)); im = image.load() –

回答

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() 
+0

謝謝Jakob!現在我只需要找到一種方法來繪製我的子矩陣(現在它不彈出)。乾杯! –

+1

你只需要調用plt.show() – Jakob