我先解释一下我想做什么。我有一个图像,我想存储特定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)
我有标题中提到的错误。
答案 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]