2016-09-22 15 views
5

Mam macierz obrazów w przestrzeni RGB i chcę dodać kanał alfa, aby były zerami. W szczególności mam tablicę numpy z kształtem (205, 54, 3) i chcę zmienić kształt na (205, 54, 4) z dodatkowym punktem w trzecim wymiarze, który jest równy 0,0. Która z tych operacji może to osiągnąć?Dodawanie kanału alfa do macierzy RGB przy użyciu numpy

+0

Masz na myśli, że chcesz tablicę z wartościami rgb i sprawić, by wartości rgb wyglądały jak '(205, 54, 4, 0)'? Proszę podać przykład, w jaki sposób powinno być wyjście. – Linus

+0

@Linus OP oznacza wejście jest tablicą 3D o wymiarach 205 x 54 x 3. – kennytm

+0

@kennytm Prawidłowo - wejście ma kształt (205, 54, 3) i chcę, żeby miał kształt (205, 54, 4)). Na przykład 'x.shape = (205,54,3)' i 'x [0] [0] = [255, 255, 255]' i chcę 'x [0] [0] = [255, 255, 255, 0] ". – Melanie

Odpowiedz

3

Można użyć jednej z funkcji stosu (stack/hstack/vstack/dstack/concatenate), aby połączyć wiele tablic razem.

numpy.dstack((your_input_array, numpy.zeros((25, 54)))) 
+0

Dziękuję. Próbowałem kilku z nich, ale nie mogłem znaleźć właściwego. 'np.dstack' ma sens. – Melanie

1

Jeśli masz swój aktualny obraz jako zmiennej rgb następnie wystarczy użyć:

rgba = numpy.concatenate((rgb, numpy.zeros((205, 54, 1))), axis=2) 

Łączy funkcja scalania rgb i jedynek tablicę razem. Funkcja Zeros tworzy tablicę zer. Ustawiamy oś na 2, co oznacza, że ​​łączymy się z wymiarami trzecimi. Uwaga: oś jest zliczana od 0.

Powiązane problemy