2016-06-02 11 views
1

Ich benutze cv2.imread und cv2.imdecode abhängig davon, ob ich ein Bild von der Festplatte oder von URL laden. Im Vergleich dazu verwende ich image.load, um von der Festplatte zu laden, die libpng verwendet. Bei Verwendung von cv2 wird meine image.shape mit (height, width, channels) ausgegeben. Bei Verwendung eines Brenners ist die Form jedoch (Kanäle, Höhe, Breite).Unterschiede in Bildabmessungen von cv2 (Python) und Taschenlampe/Bild (libpng)

Ich bin neugierig, warum das so ist und wie ich die beiden gleichsetzen kann. Mein Ziel ist es, viele Bilder, die mit cv2 heruntergeladen wurden, zu einem Fackelteenor zu kombinieren, der die Dimensionen (Kanäle, Höhe, Breite) nutzt. Ich habe versucht, die Anzahl der Arrays zu ändern, wenn sie mit cv2 heruntergeladen werden, aber die Tensoren stimmen nicht mit denen überein, die mit Fackel heruntergeladen wurden.

Antwort

2

Unterschiedliche Bibliotheken können die Bilddaten in verschiedenen Speicherformaten speichern - dies hängt vollständig von der Bibliothek und ihrem Zweck ab (Geschwindigkeit der Bilddaten, Speichereffizienz usw.).

Eine mögliche Lösung (ohne weitere 3rd-Party-Tools) für Ihr Problem kann die Verwendung von transpose sein. Ein einfaches Beispiel:

import numpy as np 

x = np.random.random((3, 15, 17)) 
print(x.shape) 

# transpose axes with this order 
y = x.transpose((1,2,0)) 
print(y.shape) 

# for the sake of testing the euqality of the respective slides: 
print(np.linalg.norm(x[0,:,:] - y[:,:,0])) 

Beispielausgabe:

(3, 15, 17) 
(15, 17, 3) 
0.0 
+1

Große, ich hatte eine Kombination aus transponieren und Matrix zu verwenden, Manipulation, um meine NP-Arrays gleichzusetzen. Danke für die Führung. –

0

Check out lutorpy:

Lutorpy ist ein libray für tiefe Lernen mit Fackel in Python gebaut, durch eine Zwei-Wege-Brücke zwischen Python/Numpy und Lua/Torch können Sie beliebige Fackelmodule (nn, rnn usw.) in Python verwenden und Variablen (Array und Tensor) einfach zwischen Fackel und Numpy konvertieren.

Es hat eine eingebaute Unterstützung für die Konvertierung von numpy Arrays Torch Tensor Objekte, die „Beispiel für die Verwendung“ auf ihre Github sehen:

## convert the numpy array into torch tensor 
xt = torch.fromNumpyArray(xn)