AttributeError:'numpy.ndarray'对象没有属性'append':图像处理示例

时间:2014-07-29 10:14:45

标签: python image numpy

我先解释一下我想做什么。我有一个图像,我想存储特定ROI的像素值。出于这个原因,我实现了以下循环(在网站的另一个主题中找到):

pixels = im.load() 

all_pixels = []
for x in range(SpecificWidth):
  for y in range(SpecificHeight):
    cpixel = pixels[x, y]
    all_pixels.append(cpixel)

但是,它不返回SpecificwidthXSpecificHeight矩阵,而是返回与值一样长的矩阵。因为我想保持ROI矩阵的大小,所以我实现了以下循环(与之前的循环大致相同):

array=np.array(all_pixels)
roi_pixels = np.zeros((SpecificWidth,SpecificHeight))

for i in range(0,array.shape[0],width):
    c_roi_pixels=all_pixels[i]
    roi_pixels.append(c_roi_pixels)

我有标题中提到的错误。

2 个答案:

答案 0 :(得分:4)

在numpy中,append函数,而不是方法

所以你应该使用例如:

roi_pixels = np.append(roi_pixels, c_roi_pixels)

请注意,append函数会创建并返回副本!它不会修改原文。

答案 1 :(得分:1)

@RolandSmith对于您所看到的错误消息的原因绝对正确。实现您想要做的更有效的方法是将整个图像转换为numpy数组,然后使用切片索引来获得与您的ROI相对应的像素:

# convert the image to a numpy array
allpix = np.array(im)

# array of zeros to hold the ROI pixels
roipix = np.zeros_like(allpix)

# copy the ROI region using slice indexing
roipix[:SpecificHeight, :SpecificWidth] = allpix[:SpecificHeight, :SpecificWidth]