2012-11-11 11 views

risposta

26

Per creare un oggetto immagine OpenCV con nel buffer di memoria (StringIO), possiamo usare OpenCV API imdecode, vedi codice qui sotto:

import cv2 
import numpy as np 
from urllib2 import urlopen 
from cStringIO import StringIO 

def create_opencv_image_from_stringio(img_stream, cv2_img_flag=0): 
    img_stream.seek(0) 
    img_array = np.asarray(bytearray(img_stream.read()), dtype=np.uint8) 
    return cv2.imdecode(img_array, cv2_img_flag) 

def create_opencv_image_from_url(url, cv2_img_flag=0): 
    request = urlopen(url) 
    img_array = np.asarray(bytearray(request.read()), dtype=np.uint8) 
    return cv2.imdecode(img_array, cv2_img_flag) 
+0

il ritorno è None se l'immagine non può essere decodificato. Ho dovuto aggiungere rimuovere un 'data: image/png; base64, 'dall'inizio della stringa che impediva la decodifica da parte di opencv. –

+0

Seconda risposta Ho visto così ma non funziona per me. Non riesco a credere che possa essere un tale problema caricare un'immagine da un URL in open-cv – CashCow

+0

imread mi dà un errore di tipo TypeError: expected o Unicode object, numpy.ndarray found'. – raincrash

Problemi correlati