Lancement de script externes

Python est le langage de prédilection du Raspberry Pi

Modérateurs : Francois, Manfraid

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

Lancement de script externes

Message par vague nerd » sam. 16 avr. 2016 12:54

Bonjour.

Cette commande imagemagik fonctionne sous bash :

Code : Tout sélectionner

convert shots/20160414-143306.jpeg shots/20160414-143312.jpeg -crop 100x100+0+0 +repage miff:- | compare -metric AE -fuzz 5% - null:
Je n'arrive pas à l'exécuter et récupérer les flux de sortie standard et sortie d'erreur en python 2.7, surement à cause du pipe.

Pour résoudre le problème par contournement, j'ai créé le script bash suivant :

Code : Tout sélectionner

#!/bin/bash
convert $1 $2 -crop $3 +repage miff:- | compare -metric AE -fuzz $4 - null:
que j'appelle en python :

Code : Tout sélectionner

p=subprocess.Popen(["bash","cropAndCompare.sh",filename1,filename2,"100x100+0+0",fuzz],stderr=subprocess.PIPE,stdout=subprocess.PIPE)
diffSize = int(p.stderr.readline().strip(' \t\n\r\f'))
Ca marche, mais c'est lent... le Popen + bash doivent coûter cher.
Quelqu'un saurait-il me proposer un code python plus optimisé ?

Cdt.
Cordialement,

Vague Nerd

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

Re: Lancement de script externes

Message par vague nerd » sam. 16 avr. 2016 13:13

Pour le contexte général, cet appel s'inclue dans un algo qui sert à :
-Soit les deux premières images en 300 pixels par 300 pixels
-Définir dans quel 1/9eme de l'image (découpage statique, voir image 3) se trouve le plus de différences (le 3eme 1/9eme, voir image 4)?
Image Image Image Image
Désolé pour la qualité des images de départ, c'était pour tester en conditions dégradées.
L'algo devant être appelé en boucle, il faut que j'optimise un minimum !
Cdt.
Cordialement,

Vague Nerd

Alastor 2262
Messages : 6
Enregistré le : mer. 17 févr. 2016 22:12

Re: Lancement de script externes

Message par Alastor 2262 » sam. 16 avr. 2016 15:13

Bonjour,

Ma réponse est peut-être bête mais... pourquoi ne fais-tu pas tout en python ?

Avec un coup de google on trouve des library pour ce genre de chose, un exmple parmi plein d'autre :

http://www.florianpaquet.com/blog/detec ... et-opencv/

Mais je dis ça, je dis rien.

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

Re: Lancement de script externes

Message par vague nerd » sam. 16 avr. 2016 15:43

Bonjour et merci pour ta réponse.
Ma réponse est peut-être bête mais... pourquoi ne fais-tu pas tout en python ?
Je ne connais que très peu python. Mes recherches google m'on conduit à imageMagik, mais sans idée préconçue.
Il s'agit d'utiliser les librairies libcv2.3, libcv-dev, manipulées en python au travers de python-opencv.
Je n'ai pas l'impression que ca change grand chose avec le couple imagesMagik/python.... Je me trompe ?
Au final, je ferai surement du Motion de toute façon.

Sinon, pour reformuler ma question : comment coder en python l'appel de la commande suivante (incluant un pipe ('|')),
tout en récupérant tout de même la sortie standard/erreur ?

Code : Tout sélectionner

convert shots/20160414-143306.jpeg shots/20160414-143312.jpeg -crop 100x100+0+0 +repage miff:- | compare -metric AE -fuzz 5% - null:
Cdt.
Cordialement,

Vague Nerd

Répondre

Retourner vers « Python »