2012-11-11 22 views

Odpowiedz

26

utworzyć obraz obiektu OpenCV z buforem pamięci (StringIO), można użyć OpenCV API imdecode patrz kod poniżej

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

powrót jest brak, gdy obraz nie może być dekodowany. Musiałem dodać usunąć "data: image/png; base64," od początku łańcucha, który uniemożliwiał dekodowanie opencv. –

+0

2. odpowiedź Widziałem tak, ale to nie działa dla mnie. Nie mogę uwierzyć, że to może być taki problem, ładowanie obrazu z adresu URL do open-cv – CashCow

+0

imread daje mi 'TypeError: oczekiwany ciąg znaków lub obiekt Unicode, błąd numpy.ndarray found'. – raincrash