访问获取像素值的相同代码时出错



我正在尝试从numpy ndarray型图像中读取RGB像素。我在 2 个类文件中实现了它。搜索直方图并查找 momen。第一个过程将首先通过直方图搜索(调用class histogram),然后通过搜索 momen (调用class momen)继续该过程。在这两个类中,都有读取输入图像的RGB像素的每个过程。我使用以下代码访问 RGB 像素:

def getbyte(self, gambar):
for i in range(0,gambar.shape[0]):
for j in range(0,gambar.shape[1]):
self.p.append(gambar[i,j])
self.flat = [i for sets in self.p for i in sets]

return self.flat

然后我运行程序。如果从流动过程中看到,则直方图将在 momen 之前处理。当我运行时,当我查看console(我使用spyder IDE)时,该过程已经到达了momen搜索线,这表明直方图搜索成功了,对吧?

现在我想问的是,在执行搜索时刻时,我在读取图像的 RGB 像素时出现错误,如下所示:

self.flat = [i for sets in self.pMoment for i in sets]

TypeError: 'numpy.uint8' object is not iterable

奇怪的是,当搜索具有确切像素捕获代码的直方图时,不会出现错误。但是为什么在搜索momen时,此代码出现问题并出现错误?那是什么错误?

请帮忙

假设self.p属性是一个列表(我的假设是基于所使用的append ()方法),那么错误代码是在循环中向self.p属性添加一个值。据说,在扁平化之前,属性 self.p 应该是一个列表列表。但是,在代码中 self.p 仍然是一个整数列表。

因此,需要做的是使用新变量将图像中的像素值临时存储在每行的图像中。然后这个变量将被添加(append)到self.p

代码片段将如下所示:

def getbyte (self, image):
for i in range (0, image.shape [0]):
rowPixel = []
for j in range (0, images.shape [1]):
rowPixel.append (image [i, j])
self.p.append (rowPixel)
self.flat = [i for sets in p for i in sets]
return self.flat

我已经使用np.ndarray类型的二维图像变量尝试了上面的代码。因为我的假设你正在做 2 个嵌套循环。

最新更新