/ / beim Ändern der Form von numpy array resultierend aus Eingabebild - python, numpy, scipy, computer-vision, scikit-image

Ändern der Form von numpy array resultierend aus Eingabebild - Python, Numpy, Scipy, Computer-Vision, Scikit-Bild

Ich versuche, einen vorhandenen Code an meine eigenen Bedürfnisse anzupassen. Ursprünglich verwendete der Code imgs = np.ndarray((total, 1, image_rows, image_cols), dtype=np.uint8) um eine Liste von Bilddateien in einem numplien Array-Format zu speichern. Beim Iterieren des Ordners wird jede Bilddatei wie folgt gelesen img = skimage.io.imread(os.path.join(train_data_path, image_name)) Es funktioniert gut. Der Code ist wie folgt:

 image_rows = 420
image_cols = 580
imgs = np.ndarray((total, 1, image_rows, image_cols), dtype=np.uint8)
i=0
for image_name in images:
img = skimage.io.imread(os.path.join(train_data_path, image_name))
img = np.array([img])
imgs[i]=img
i+=1

Um meinen eigenen Bedürfnissen zu entsprechen, habe ich ein Bilddatei-Array mit der Form [total, image_rows,image_cols,1]. Mit anderen Worten, ich änderte es als imgs = np.ndarray((total,image_rows, image_cols,1), dtype=np.uint8) Das Ausführen des Codes verursacht jedoch den folgenden Fehler

 imgs[i] = img
ValueError: could not broadcast input array from shape (1,420,580) into shape
(420,580,1)

Gibt es eine Möglichkeit, die Form von zu ändern? img, die ursprünglich die Form von hat [1,420,580] nach dem Lesen aus der Datei. Wie kann ich es ändern? [420,580,1] ohne die entsprechenden Pixelwerte im Bild zu beeinflussen.

Antworten:

1 für die Antwort № 1

Sie möchten die Dimensionen transponieren. Es kann mit der Transponierte Methode gemacht werden:

img = img.transpose(1,2,0)

(für Ihren Fall)