2013-07-31 14 views
14

Sto lavorando con PyOpenCV. Come convertire l'immagine cv2 (numpy) in una stringa binaria per scrivere su MySQL db senza un file temporaneo e imwrite?Python OpenCV converte l'immagine in stringa di byte?

Sono google, ma non abbiamo trovato nulla ...

Sto cercando imencode, ma non funziona

capture = cv2.VideoCapture(url.path) 
capture.set(cv2.cv.CV_CAP_PROP_POS_MSEC, float(url.query)) 
self.wfile.write(cv2.imencode('png', capture.read())) 

Errore:

File "server.py", line 16, in do_GET 
    self.wfile.write(cv2.imencode('png', capture.read())) 
    TypeError: img is not a numerical tuple 

aiutare qualcuno!

risposta

3

capture.read() restituisce una tupla, (err, img).

prova frazionamento in su:

_,img = capture.read() 
self.wfile.write(cv2.imencode('png', img)) 
+0

restituisce (Vero, matrice ([[137], [80], [78], ..., [66], [96], [130]], dtype = uint8)), ma non un byte stringa – xercool

+0

Come convertire quello in stringa di byte? – xercool

+1

la mia soluzione è 'self.wfile.write (numpy.array (cv2.imencode ('. Png', img) [1]). Tostring())' – xercool

1

Il mio codice per utilizzare OpenCV con python cgi:

im_data = form['image'].file.read() 
    im = cv2.imdecode(np.asarray(bytearray(im_data), dtype=np.uint8), 1) 
    ret, im_thresh = cv2.threshold(im, 128, 255, cv2.THRESH_BINARY) 
    self.send_response(200) 
    self.send_header("Content-type", "image/jpg") 
    self.end_headers()  
    ret, buf = cv2.imencode('.jpg', im_thresh) 
    self.wfile.write(np.array(buf).tostring()) 
25

Se si dispone di un'immagine img (che è una matrice NumPy) è possibile convertire in stringa utilizzando:

>>> img_str = cv2.imencode('.jpg', img)[1].tostring() 
>>> type(img_str) 
'str' 

Ora è possibile memorizzare facilmente l'immagine all'interno del database, e en recuperarlo utilizzando:

>>> nparr = np.fromstring(STRING_FROM_DATABASE, np.uint8) 
>>> img = cv2.imdecode(nparr, cv2.CV_LOAD_IMAGE_COLOR) 

in cui è necessario sostituire STRING_FROM_DATABASE con la variabile che contiene il risultato della query al database contenente l'immagine.

Problemi correlati