Разная форма при индексации массива numpy - PullRequest
0 голосов
/ 23 апреля 2020

Я пытаюсь прочитать файл 'PNG' как массив numpy. Я делаю это с библиотекой cv2, cv2.imread ('image'), которая возвращает массив numpy. Когда я распечатываю его форму, я получаю (6784, 5216, 3), что я на самом деле хочу. Но когда я пытаюсь перебрать массив с массивом [1] или массивом [0], в обоих случаях я получаю 5216 выходных данных. Таким образом, я получаю ошибкуOfBoundIndex. В любом случае я также мог видеть другие пиксели между 5216-м индексом и 6784?

Добавляем код:

path = "/home/y0b8k/Projects/y3-ogam/gt_20/train_2.png"
ar = cv2.imread(path_copy, cv2.IMREAD_UNCHANGED)

Мой l oop раньше был, как вы можете видеть ниже. Он на самом деле читает значения и пытается покрасить новое выходное изображение по моей воле.

x, y = 0, 0

while y < mask.size[1]-1:  

    while x < mask.size[0]:
        value = pix[x,y]
        print(x)
        if value[0] == 3:
            col = [64,173,38,255]
            ar[x,y] = col
        if value[0] == 5:
            #print(ar[x,y])
            col = [203,0,0,255]
            ar[x,y] = col
        if value[0] == 7:
            col = [30,50,250,255]
            ar[x,y] = col
        if value[0] == 4:
            col = [100,100,100,255]
            ar[x,y] = col
        else:
            col = [255,255,255,255]
            ar[x,y] = col
        x += 1
    y+=1
    x= 0

cv2.imwrite("çıktı.png",ar)

1 Ответ

0 голосов
/ 23 апреля 2020
for row in png:
    for pixel in row:
         # do stuff

Должен повторяться по всем пикселям.

for pixel in array[0]:
    # do stuff

Запустится 5216 раз (верхний ряд пикселей), но я не могу сказать, что вы делаете, потому что Вы не опубликовали код

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...