2011-10-25 10 views
6

Ho scritto un semplice programma per Maemo di Python per controllare il colore di ogni pixel ogni volta che viene chiamata la mia funzione. Ma questa funzione funziona molto lentamente (3-5 secondi per ogni chiamata). C'è un modo più veloce per fare questo?usa la fotocamera maemo di python

import Image 
import os 
import sys 

# sen_pos = (pixel_x, pixel_y) 
def sen(sen_pos): 
    os.system("gst-launch v4l2src device=/dev/video0 num-buffers=1 ! ffmpegcolorspace ! jpegenc ! filesink location=cam.jpg") 
    frame = Image.open("cam.jpg") 
    col = frame.getpixel((sen_pos[0], sen_pos[1])) 
    avecol = sum(col)/len(col) 
    if avecol > 127: 
     return "white" 
    elif avecol < 127: 
     return "black" 
    return None 
+0

Senza essere a conoscenza di gstreamer, la conversione dello spazio dei colori è davvero necessaria? Inoltre, l'ottimizzazione del parametro di qualità su 'jpegenc' può essere d'aiuto. –

risposta

1

Come dice George, è possibile che si verifichi un sovraccarico in una chiamata di sistema, ma sospetto che la chiamata getpixel(). Il PIL getpixel() è notoriamente lento. Invece load() l'immagine e poi passa attraverso - che dovrebbe essere più veloce.