2017-10-07 1 views
2

Ich versuche, ein Bild mit OPENCV von einem io.BytesIO() Struktur zu laden. Ursprünglich lädt der Code, um das Bild mit PIL, wie unten:Load BytesIO Bild mit opencv

image_stream = io.BytesIO() 
image_stream.write(connection.read(image_len)) 
image_stream.seek(0) 
image = Image.open(image_stream) 
print('Image is %dx%d' % image.size) 

Ich habe versucht, mit OpenCV, so zu öffnen:

image_stream = io.BytesIO() 
image_stream.write(connection.read(image_len)) 
image_stream.seek(0) 
img = cv2.imread(image_stream,0) 
cv2.imshow('image',img) 

Aber es scheint, dass imread nicht mit BytesIO beschäftigen() . Ich erhalte einen Fehler.

Ich verwende OPENCV 3.3 und Python 2.7. Bitte, könnte mir jemand helfen?

Antwort

1

Henrique Try this:

import numpy as np 

image_stream = io.BytesIO() 
image_stream.write(connection.read(image_len)) 
image_stream.seek(0) 
file_bytes = np.asarray(bytearray(img_stream.read()), dtype=np.uint8) 
img = cv.imdecode(file_bytes, cv.IMREAD_COLOR)