bonjour à tous,
je suis nouveau sur ce forum, nouveau sur pd, nouveau sur Linux... enfin, "hello world" comme on dit
j’essaye de crée un détecteur de présence sur une zone définit pour une installation vidéo.
ça doit envoyer un "1" quand il y a quelqu'un, et un "0" s'il y a personne.
ce que j'ai pensé, c'est utilisé l'objet [pix_blob]: pour détecter s'il y du mouvement, comparer la sortie "X" (ou "Y") avec la même sortie d'une milliseconde après.
ça me semble logique sauf que je n'arrive pas à envoyer ce chiffre "X" avec un [del], pour le comparer.
Est ce que je suis sur la bonne piste ? comment envoyer un "float" en delay ?
y a t il une meilleur solution ?
merci!
Hors ligne
Bonjour et bienvenue,
pix_blob donne le centre de gravité (lumineux) d'une image, lequel peut être connu au départ ( X et Y si l'image est statique) .
la démarche peut donc être :
si x - X ou y -Y= 0 alors mon patch envoie 0
si x- X ou y -Y différent de 0 alors mon patch envoie 1
cela n'a pas vraiment d'utilité d'introduire un délai surtout à 1 ms sachant que GEM va traiter à ... ce que tu auras choisi pour gemwin (20 fps par défaut) .
le mieux est de mettre en p.j. ton début de patch quoi qu'il en soit pour mieux juger .
Hors ligne
Hello...
Avec ton patch on pourrait plus facilement t'aider...
Quoi qu'il en soit, perso, je n'ai jamais réussi à bien maîtriser [pix_blob].
J'ai pondu deux patch pour effectuer de la détection de mouvement basé sur le calcul de la moyenne des valeurs des pixels d'une zone donnée.
http://yamatierea.org/papatchs/detc-mvt … vt-DnD.zip
http://yamatierea.org/papatchs/detc-mvt … vt-8x8.zip
Ça ne va clairement pas résoudre ton pb, mais couplé avec un [pix_backgound] qui lui fait un snap shot de référence tu devrais pouvoir déterminer une présence ou pas.
Bon courage...
Hors ligne
merci pour vos réponses !
je vous joins mon patch.
il y a deux écrans sur la fenêtre GEM, avec une vidéo différente sur chacun.
quand il y a une présence dans la zone de la caméra, j'aimerai que la vidéo change sur les deux écrans.
sakramh-
"si x - X ou y -Y= 0 alors mon patch envoie 0
si x- X ou y -Y différent de 0 alors mon patch envoie 1"
je ne comprends pas trop x-x ou y-y sera toujours Zéro, non ?
mais à vrais dire, je ne comprends très bien ce qui est "centre de gravité lumineux" en X,Y.
les paramètres X et Y et "size" bouge quand il y a une présence.
l'idée du délai est d'essayer de récupérer la "stabilité" de ces paramètres. si ils sont "stable" il y a personne, et quand il "bouge", il y a quelqu'un. donc de comparé un chiffre avec celui qui arrive "un temps" après.
le délai pourrai aussi géré les personnes statiques. c'est à dire que si ces paramètre sont les mêmes pendent un certain temps (2 seconde par exemple) alors il faut envoyer 0, et retour à la première vidéo.
Olivier -
oui, j'ai déjà vue ces deux patch, très intéressent. je t'avoue que je ne comprend pas trop comment t'a fait, mais je vais essayer de les analyser, et de couplé avec "pix_background".
merci !
Hors ligne
j'ai pas écrit x-x mais x-X . X et Y étant les positions données par pix_blob à l'origine . x et y avec une présence . La même idée que comparer avec un snapshot de pix_bacground en somme . D'autre part dans PD il y a tous les objets logiques (and, or, etc...) pour faire des comparaisons sur x et y , x ou y ...
Mais un temps de comparaison inférieur à celui de Gem ne te donnera rien .
Quand à [pix_blob] qui va de 0 à 1 il faut l'adapter selon les coordonnées de GEM (640x480 sur mon exemple . soit une texture rectangle 5.34 x 4) (en p.j.) . Du moins sur ma version . Toujours avoir à l'esprit que le sytème orthonormé des objets de "extended" n'est pas obligatoirement cohérent avec celui de Gem . bah PD c'est untruc de matheux
Dernière modification par sakramh (2015-09-13 11:38:54)
Hors ligne
Bonjour à tous et toutes,
Je me permet de m'insérer dans la discussion, car tes patch Olivier m'interesse depuis pas mal de temps, et notament celui concernant la détection de mouvement. J'ai mis le nez dedans il y a une 15zaine de jours, et voyant le présent sujet ouvert, je me faisais un plaisir d'enfin comprendre quelques choses...
Mais je vois que ce n'est pas si simple...
Bref, j'en profite pour te poser un (1ère?) question à propos de celui ci :
- Pourquoi ta fenêtre GEM est décalé en X et en Z (ou Y et Z je n'ai pas le patch sous les yeux) ? D'autant que tu décale aussi le background d'autant aprés... J'ai l'impression que c'est en rapport avec les cellules ??
J'ai essayé d'adapter ton patch à une fenétre GEM perso à laquelle j'ajoute du contenu, mais tout ce décalaient. J'ai essayé plusieurs choses, mais sans succés.
Le mieux que j'ai pu faire, c'est avoir les cellules qui était à peu près là où j'en avais besoin, mais la visualisation de celles ci ne correspondaient pas...
il y avait parfois un gros décalage entre l'entrée de la zone de déclenchement et la représentation de celle-ci...
Bref, si tu as des eclaircissement, je suis preneur.
Bien à vous
Hors ligne
merci sakramh pour ton explication.
le problème que la valeur X ou Y du depart n'est pas très fiable. il soufit qu'il y a un petit changement de lumière pour que la valeur change...
est ce qu'il n'y pas un moyen d'evaluer la "stabilité" d'un parametre de sortie ?
et, oui, je suis d'accord avec Tepaze pour un petit cours sur le patch de Olivier
en faite il y déjà ce qu'il me faut, il suffit que j'adapte la zone de detection à ma zone de la camera.
ce qui me reste à faire est traduire les bang qui se declanche à une phrase genre "si il n'y à pas de bang pendend un x temps- envoie 0.
dès qu'il y a un bang- envoie 1".
des idées?
Hors ligne
ben oui, il te faudra déterminer un seuil pour différentier les variations de lumière (ou le passage d'une mouche) d'une intrusion humaine . mais là encore il y a tout ce qu'il faut avec les objets de base de pd (genre [sel] [route] [min] [max] ...) . Très bon exercice en vue puisque tu débutes . Quant au [bang( selon la condition, je m'orienterais par exempe vers [once] puisque tu auras une base de temps pour le réinitialiser . Mais comme bien souvent en programmation il y a plusieurs manière de faire pour le même résultat . Bonne découverte .
(perso j'ai évité de repiquer des patchs (sauf gros blocage), sinon je crois que je serais passé à coté de pas mal d'objets et de leur propriétés) (et je passe encore plus de temps dans l'aide qu'à tisser ) .
Dernière modification par sakramh (2015-09-14 11:40:04)
Hors ligne
sakramh a écrit:
perso j'ai évité de repiquer des patchs (sauf gros blocage), sinon je crois que je serais passé à coté de pas mal d'objets et de leur propriétés.
C'est très juste, mais pour ma part, je découvre aussi d'autre façon de faire en observant comment font les autres. Et il faut bien avouer qu'un patch qui fait bien pile poil ce qu'on lui demande, et qui est déjà tout fait, c'est assez rare :-)
Hors ligne
yop, en effet... les bases...
en utilisant un [>] avec le "size" du blob, ça marche pas mal.
pas très stable, mais peut être en rajoutent qq filtres...
je reste quand même curieux par apport au patch de Olivier, pour déterminer une zone dans la vue de la camera ça peut être pratique.
Hors ligne
citation :
en utilisant un [>] avec le "size" du blob
on progresse . Tu as donc : si la valeur absolue (et oui le blob peut diminuer aussi) de la différence size du blob background vs size du blob intrusion > à seuil alors 1 . if ... then .
Quand au patch d'Olivier c'était juste un truc pour décorer sa barbe avec de jolis carrés rose
Dernière modification par sakramh (2015-09-14 23:56:50)
Hors ligne
hé hé... un problème résolu, d'autre arrivés
la détection de présence marche pas mal, mais par contre - ça fait ralentir à mort la lecture vidéo !!!
donc si je switch entre le 1 et le 0 manuellement, ça fait exactement ce que je veux. mais dès que je connecte ma détection de présence- la vidéo est ralentis.
est ce que c'est lier au différence de fps entre la webcam est la vidéo ?
comment faire alors ?
le patch en p.j.
merci!
Hors ligne
j'ai trouvé
en faite il fallait rajouter un [change], si non a chaque fois il recharger la vidéo.
les base ...
Hors ligne
Pages: 1