2016-09-08 5 views
2

Ich muss ein Bild in einem numpy-Array, das über CV2 geladen wurde, in das korrekte Format für die Deep Learning-Bibliothek mxnet für seine Faltungsschichten konvertieren.OpenCV-Bild umformen (numpy) Abmessungen

Meine aktuellen Bilder sind wie folgt geformt: (256, 256, 3), oder (Höhe, Breite, Kanäle).

Von dem, was mir gesagt wurde, muss dies tatsächlich sein (3, 256, 256) oder (Kanäle, Höhe, Breite).

Leider ist mein Wissen über numpy/python opencv nicht gut genug, um zu wissen, wie man die Arrays korrekt manipuliert.

Ich habe herausgefunden, dass ich die Arrays durch cv2.split in Kanäle aufteilen könnte, aber ich bin unsicher, wie man sie wieder im richtigen Format kombinieren kann (ich weiß nicht, ob cv2.split optimal ist oder wenn es bessere Möglichkeiten gibt).

Danke für jede Hilfe.

Antwort

2

Sie können numpy.rollaxis wie folgt verwendet werden: Wenn Ihr image als Form (height, width, channels)

import numpy as np 

new_shaped_image = np.rollaxis(image, axis=2, start=0) 

Das bedeutet, dass die 2 nd Achse des new_shaped_image bei 0 Stelle sein wird.

So wird new_shaped_image.shape(channels, height, width)

+0

Dank sein! Das ist ein sehr nützlicher Befehl. – AdmiralJonB