получение ошибки при доступе к тому же коду для получения значения пикселя - PullRequest
0 голосов
/ 05 августа 2020

Я пытаюсь прочитать пиксели RGB из изображения типа numpy ndarray. Я реализовал это в 2-х классных файлах. Для поиска гистограмм и моментов. Первый процесс сначала go выполнит поиск по гистограмме (вызовет class histogram), затем процесс продолжится поиском момента (вызовом 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

Затем я запускаю программу. Если вы видите из процесса потока, то гистограмма будет обработана раньше момента. Когда я бегу, когда я смотрю на console (я использую spyder IDE), процесс дошел до строки поиска моментов, это означает, что поиск по гистограмме прошел успешно, верно?

Что же теперь Хочу спросить, при выполнении поиска моментов выдает ошибку при чтении пикселя RGB изображения следующего вида:

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

TypeError: 'numpy.uint8' object is not iterable

Странно, при поиске гистограммы с точным кодом захвата пикселей ошибка не появляется. Но почему при поиске момента с этим кодом возникает проблема и появляется ошибка? Что это за ошибка?

Пожалуйста, помогите

1 Ответ

1 голос
/ 06 августа 2020

если атрибут self.p является списком (мое предположение основано на используемом методе append ()), тогда код ошибки находится в l oop добавлении значения к атрибуту 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 вложенных цикла.

...