[RESOLU] - Prendre une photo rapidement

Pour les questions sur la PiCamera et les modèles compatibles

Modérateur : Francois

Répondre
Avatar du membre
vague nerd
Modérateur
Messages : 1469
Enregistré le : mar. 14 oct. 2014 11:42
Localisation : France !

[RESOLU] - Prendre une photo rapidement

Message par vague nerd » ven. 22 avr. 2016 20:19

Bonjour.

J'essaie de prendre des photos le plus rapidement possible avec les cam officielle/officielle Noir/clone Noir + led IR sur un pi A+.

Après quelques recherches, j'en suis à :

Code : Tout sélectionner

raspistill --nopreview --exposure sports --colfx 128:128 --timeout 1 -w 250 -h 250 -o nom_de_fichier
Cela prend de l'ordre de 0.8s de moyenne.
C'est --nopreview --exposure sports et --timeout 1 qui m'ont permis de passer de 7 secondes à 0.8s.

Avez-vous réussi à obtenir mieux que ça ?
Existe t il autre chose que raspistill, maintenant ?
Cdt.
Cordialement,

Vague Nerd

guillaume9344
Raspinaute
Messages : 629
Enregistré le : mar. 6 janv. 2015 19:44
Localisation : finistere

Re: Prendre une photo rapidement

Message par guillaume9344 » sam. 23 avr. 2016 08:20

Peut etre une extraction de photos à partir d'un flux video de raspivid?
rpi b+ ,osmc, motioneyes
rpi 2 raspbian , server minecraft 24h/24 , utilisation gpio
orange pi pc debian ,utilisation gpio, motion cam

Avatar du membre
vague nerd
Modérateur
Messages : 1469
Enregistré le : mar. 14 oct. 2014 11:42
Localisation : France !

Re: Prendre une photo rapidement

Message par vague nerd » sam. 23 avr. 2016 19:12

Bonne idée.

Je lance un

Code : Tout sélectionner

raspivid -o /run/shm/stream%02d.h264 -fps 30 -g 1 -b 25000000 -sg 1000 -wr 4 -t 0 &
et j'essai de récupérer les dernieres frames avec libav-tools..

Code : Tout sélectionner

avconv -i /run/shm/stream01.h264 s%04d.jpg
Mais je ne sais pas choisir une frame en particulier...
CDt.
Cordialement,

Vague Nerd

Avatar du membre
vague nerd
Modérateur
Messages : 1469
Enregistré le : mar. 14 oct. 2014 11:42
Localisation : France !

Re: Prendre une photo rapidement

Message par vague nerd » sam. 23 avr. 2016 19:52

Code : Tout sélectionner

raspivid -n -t 1000000 -vf -b 2000000 -fps 25 -o - | gst-launch-1.0 fdsrc ! video/x-h264,framerate=25/1,stream-format=byte-stream ! decodebin ! videorate ! video/x-raw,framerate=10/1 ! videoconvert ! jpegenc ! multifilesink location=img_%04d.jpg
2 à 3 fps. Mieux.

Je pige pas :

Code : Tout sélectionner

raspivid -n -t 0 -vf -b 500000 -fps 10 -w 250 -h 250 -o - | gst-launch-1.0 fdsrc ! video/x-h264,framerate=10/1,stream-format=byte-stream ! decodebin ! videorate ! video/x-raw,framerate=10/1 ! videoconvert ! jpegenc ! multifilesink location=img_%04d.jpg
et j’obtiens plein d'images, toutes les 3 secondes !

Code : Tout sélectionner

raspivid -n -t 0 -b 500000 -fps 25 -w 250 -h 250 -o - | gst-launch-1.0 fdsrc ! video/x-h264,framerate=25/1,stream-format=byte-stream ! decodebin ! videorate ! video/x-raw,framerate=25/1 ! videoconvert ! jpegenc ! multifilesink location=img_%04d.jpg
Semble convenir pour mon usage... reste à vérifier la latence.
Merci pour l'idée.
Cordialement,

Vague Nerd

guillaume9344
Raspinaute
Messages : 629
Enregistré le : mar. 6 janv. 2015 19:44
Localisation : finistere

Re: Prendre une photo rapidement

Message par guillaume9344 » sam. 23 avr. 2016 20:47

De rien , surtout que j avais aucune idée de la facon de la réaliser. :D
rpi b+ ,osmc, motioneyes
rpi 2 raspbian , server minecraft 24h/24 , utilisation gpio
orange pi pc debian ,utilisation gpio, motion cam

Avatar du membre
vague nerd
Modérateur
Messages : 1469
Enregistré le : mar. 14 oct. 2014 11:42
Localisation : France !

Re: Prendre une photo rapidement

Message par vague nerd » dim. 24 avr. 2016 14:46

Bon, je confirme que ça marche bien.
surtout que j avais aucune idée de la facon de la réaliser
Ben moi non plus !

Lancement de la génération de jpeg à 25 images par seconde :

Code : Tout sélectionner

raspivid -n -t 0 -b 500000 -fps 25 -w 250 -h 250 -o - | gst-launch-1.0 fdsrc ! video/x-h264,framerate=25/1,stream-format=byte-stream ! decodebin ! videorate ! video/x-raw,framerate=25/1 ! videoconvert ! jpegenc ! multifilesink max-files=100 location=/run/shm/automate/run/img_%02d.jpg &
Ensuite, en python, sélection de l'image la plus récente....

Code : Tout sélectionner

def get_oldest_file(files, _invert=False):
    """ Find and return the oldest file of input file names.
    Only one wins tie. Values based on time distance from present.
    Use of `_invert` inverts logic to make this a youngest routine,
    to be used more clearly via `get_youngest_file`.
    """
    gt = operator.lt if _invert else operator.gt
    # Check for empty list.
    if not files:
        return None
    # Raw epoch distance.
    now = time.time()
    # Select first as arbitrary sentinel file, storing name and age.
    oldest = files[0], now - os.path.getctime(files[0])
    # Iterate over all remaining files.
    for f in files[1:]:
		try:
			age = now - os.path.getctime(f)
		except:
			continue
		if gt(age, oldest[1]):
			# Set new oldest.
			oldest = f, age
    # Return just the name of oldest file.
    return oldest[0]
J'observe une certaine latence, que je n'ai pas mesurée. Pour la baisser : baisser la taille du buffer côté raspivid, et baisser le nombre de fichiers (ici 100) pour que l'algo python de recherche du plus récent soit plus rapide (de l'ordre de 0.15s pour 100 fichiers).

EDIT : pour trouver le fichier le plus recent, un script bash sera surement plus performant...

Cdt.
Cordialement,

Vague Nerd

Avatar du membre
vague nerd
Modérateur
Messages : 1469
Enregistré le : mar. 14 oct. 2014 11:42
Localisation : France !

Re: [RESOLU] - Prendre une photo rapidement

Message par vague nerd » dim. 24 avr. 2016 17:19

J'ai tenté en shell :

Code : Tout sélectionner

result = subprocess.check_output('ls -t /run/shm/automate/run/*.jpg 2>/dev/null | head -n1', shell=True)
	#print '\nget_youngest_file_by_script()[' + result.strip('\n') + ']get_youngest_file_by_script()'
	return result.strip('\n')
Mais le pipe me pose probleme
...
Cordialement,

Vague Nerd

Répondre

Retourner vers « Le module caméra et ses clones »