18/07/2016, 17:04
(Questo messaggio è stato modificato l'ultima volta il: 25/07/2016, 18:30 da NDraspy.)
Salve a tutti
non sapevo bene come esprimere il concentto nel titolo del posto...
cmq
il mio problema è il seguente:
voglio registrare un'immagine jpeg catturata con la telecamera all'interno di una lista.
Nella documentazione l'output per la telecamera accetta un aggetto con un metodo write, per questo ho creato una classe con un metodo write che non fa altro che aggiungere i dati ricevuti in una lista
quando lancio
in effetti mi ritrovo nella lista myFile._buffer, la stringa con i byte che compongono l'immagnine.
poi ho provato a creare l'immagine jpeg cosi:
ovviamente non funziona l'immagine non è visualizzabile
ho provato ad aggiungere manualmente all'inizio dell'immagine 0xFF 0xD8 0xFF e alla fine il 0xD9
ma niente lo stesso.
qualche idea?
non sapevo bene come esprimere il concentto nel titolo del posto...
cmq
il mio problema è il seguente:
voglio registrare un'immagine jpeg catturata con la telecamera all'interno di una lista.
Nella documentazione l'output per la telecamera accetta un aggetto con un metodo write, per questo ho creato una classe con un metodo write che non fa altro che aggiungere i dati ricevuti in una lista
Codice:
class myFile(object):
'''Class to create special like-file object to store camera frame in a
list object.'''
_buffer=[]
_size=None
def __init__(self,maxsize=None):
'''maxsize: maximun lenght of buffer; when the length's buffer is biggest of maxsize
the buffer is reset.'''
self._size=maxsize
def write(self,b):
'''Append "b" valuen in the buffer. If the maxsize is passed
the buffer is reset'''
if self._size and len(self._buffer)>self._size:
self._buffer=[]
self._buffer.append(b)
@classmethod
def empyBuffer(cls):
cls._buffer=[]
return cls._buffer
@classmethod
def getBuffer(cls,pos=None,rng=None):
'''Return the buffer.
pos: the start position
rng: lenght of range value to return
'''
n=len(cls._buffer)
if not pos:
if not rng or rng<=0:
return cls._buffer
else:
return cls._buffer[n-rng:n]
elif pos<0:
return cls._buffer[-1]
elif pos>0 and rng>pos:
return cls._buffer[pos:pos+rng]
else:
return cls._buffer[pos]
quando lancio
Codice:
picamera.PiCamera(myFile(),format='jpeg')
in effetti mi ritrovo nella lista myFile._buffer, la stringa con i byte che compongono l'immagnine.
poi ho provato a creare l'immagine jpeg cosi:
Codice:
ff=open("myfile.jpeg","wb")
ff.write(myFile._buffer[0])
ff.close()
ovviamente non funziona l'immagine non è visualizzabile
ho provato ad aggiungere manualmente all'inizio dell'immagine 0xFF 0xD8 0xFF e alla fine il 0xD9
ma niente lo stesso.
qualche idea?