2017-10-03 4 views
1

Ich habe versucht, ein Bild über Javascript an einen Flask-Server zu senden, um Bounding-Boxen auf Koordinaten zu zeichnen, die ich von meiner eigenen API erhielt. Wie kann ich dies in ein numpliges Array konvertieren?Flask to Numpy Image Conversion

Ich dachte an die cv2.imdecode-Funktion, aber ich möchte diese riesige Datei nicht auf meinem Server herunterladen. Hier ist ein Beispiel für die Eingabezeichenfolge src i Senden sind an Kolben:

data:image/jpeg;base64,IMGDATA HERE 

Ich glaube, dass diese Zeichenfolge Base64 codierte, aber ich bin nicht sicher, wie diese Umwandlung in Python zu machen.

Antwort

0

Ich habe etwas ähnliches getan. Wenn Sie Ihre URL haben, müssen Sie zuerst den IMGDATA-Teil der src-Zeichenfolge dekodieren, die base64-codiert ist. Zuerst müssen Sie IMGDATA von der Inputstring trennen. Dies kann mit Hilfe getan:

import base64 
imgdata = imgsrcstring.split(',')[1] 
decoded = base64.b64decode(imgdata) 

Dann können Sie die PIL libarary verwenden, um die Bytes Darstellung der Zeichenfolge in ein Bild umzuwandeln, die dann zu einem numpy Array umgewandelt werden können:

from PIL import Image 
from io import BytesIO 

img = np.array(Image.open(BytesIO(decoded)))