Bonjour à tout le monde, je viens de découvrir récemment les capacités qu'offrait Processing en terme d'interaction suite au visionnage de cette vidéo.
Hors ligne
Bonjour layegning et bienvenue,
Avec une webcam, un vidéo projecteur et un pc, tu peux faire une surface réactive qui fonctionne avec des marqueurs ou avec les doigts, dans ce cas : regarder du côté de TUIO, reactivision...
Mais aussi, tu peux utiliser la webcam pour capter des formes et des mouvements, dans ce cas il faut que tu te renseignes sur la détection de blobs, par exemple avec les librairies opencv, blobdetection, entre autres.
Un problème que tu vas rencontrer si tu veux projeter une image et détecter en même temps dans le même axe, ce sont les interactions lumineuses, c'est pour ça que dans les surfaces réactives la détection se fait dans l'infrarouge et pas dans les fréquences lumineuses visibles.
Depuis un an, il y a aussi la kinect qui permet assez simplement de détecter formes et mouvements, c'est plus précis qu'une webcam (et c'est aussi une webcam...), pour l'utiliser avec processing il y a simple-openni (et aussi openkinect si tu es sur mac).
Pour tout ça il y a du code source en exemple dans les liens ci-dessus, fais des essais, ça te permettra de définir plus précisément ce que tu veux faire.
Hors ligne
@emoc
Merci pour avoir réagi aussi rapidement alors je récapitule aprés avoir posté sur ce forum je me suis orienté vers http://www.learningprocessing.com/ et j'ai découvert un tuto qui parle détecteur de mouvement assez simple donc voici le code
-----------------------------------------------------------
// Learning Processing
// Daniel Shiffman
// http://www.learningprocessing.com
// Example 16-13: Simple motion detection
import processing.video.*;
// Variable for capture device
Capture video;
// Previous Frame
PImage prevFrame;
// How different must a pixel be to be a "motion" pixel
float threshold = 50;
void setup() {
size(320,240);
video = new Capture(this, width, height, 30);
// Create an empty image the same size as the video
prevFrame = createImage(video.width,video.height,RGB);
}
void draw() {
// Capture video
if (video.available()) {
// Save previous frame for motion detection!!
prevFrame.copy(video,0,0,video.width,video.height,0,0,video.width,video.height); // Before we read the new frame, we always save the previous frame for comparison!
prevFrame.updatePixels();
video.read();
}
loadPixels();
video.loadPixels();
prevFrame.loadPixels();
// Begin loop to walk through every pixel
for (int x = 0; x < video.width; x ++ ) {
for (int y = 0; y < video.height; y ++ ) {
int loc = x + y*video.width; // Step 1, what is the 1D pixel location
color current = video.pixels[loc]; // Step 2, what is the current color
color previous = prevFrame.pixels[loc]; // Step 3, what is the previous color
// Step 4, compare colors (previous vs. current)
float r1 = red(current); float g1 = green(current); float b1 = blue(current);
float r2 = red(previous); float g2 = green(previous); float b2 = blue(previous);
float diff = dist(r1,g1,b1,r2,g2,b2);
// Step 5, How different are the colors?
// If the color at that pixel has changed, then there is motion at that pixel.
if (diff > threshold) {
// If motion, display black
pixels[loc] = color(0);
} else {
// If not, display white
pixels[loc] = color(255);
}
}
}
updatePixels();
}
-----------------------------------------------------------------
pour faire plus simple est ce qu'il serait possible d'engendrer à partir de ces zones noirs des bulles (en clair des cercles dont l'opacité dépendra de l'intensité des zones noirs), une sorte de condition peut etre avec if & else.
Pour BlobDetection je l'ai installé tt fonctionne à merveille, j'ai meme commencé à ouvrir certains exemples mais c'est le fait d'exploiter ces données qui me posent probléme.
Hors ligne
Par ailleurs je viens de découvrir un logiciel du nom de PO-Motion qui fait ce genre de truc trés simple d'utilisation. seulement j'arrive pas à creer des scénes ; les fichiers d'exemple ont pour extension .MTN quelqu'un aurait t-il des infos la dessus !
Hors ligne
layegning a écrit:
Par ailleurs je viens de découvrir un logiciel du nom de PO-Motion qui fait ce genre de truc trés simple d'utilisation. seulement j'arrive pas à creer des scénes ; les fichiers d'exemple ont pour extension .MTN quelqu'un aurait t-il des infos la dessus !
Je ne connaissais pas jusque là, mais je viens de jeter un oeil sur leur site, et leur « business model » est assez clair : le logiciel est gratuit mais ils vendent les scènes...
layegning a écrit:
pour faire plus simple est ce qu'il serait possible d'engendrer à partir de ces zones noirs des bulles (en clair des cercles dont l'opacité dépendra de l'intensité des zones noirs), une sorte de condition peut etre avec if & else.
Pas si simple, ce ne sont pas des zones noires qui sont définies mais des pixels noirs, si tu remplaces chaque pixel par un disque blanc, ça ne ressemblera probablement pas à ce que tu cherches, tu peux afficher une forme pour un pixel noir sur 20 par exemple. Pour ça il faut que tu dessines ton image dans un buffer graphique que tu affiches à la fin de draw().
Mais peut-être que tu devrais te familiariser avec processing pour commencer, je ne sais pas trop d'où tu pars en programmation, et si tu veux te sentir à l'aise, tripoter les exemples, il vaut mieux avoir quelques bases
Hors ligne
merci Emoc pour ta disponiblité. Effectivement, j'essaye d'appréhender les bases de ce logiciel mais disons c'est le volet interaction qui m'intéresse parce que je travaille dans le motion design et la 3D donc ça m'exciterais trop si des gens pouvaient interagir avec mes créas. Je fais parfois quelques recherches sur le net mais j'ai l'impression qu'il existe une multitude de solutions par rapport à ça (OpenFrameworks, OpenCV, PureData, EyesWeb ...) mais je me perd un peu dans toute cette "folie". Je m'orienter vers toi pas à pas pour ce projet si cela ne te dérange pas bien sur.
Dernière modification par layegning (2011-10-12 16:30:11)
Hors ligne
Salut layegning,
Processing est une solution libre et gratuite pour te permettre tout un tas de gymnastique algorithmique.
Si tu débute en programmation c'est un super outil, mais il va falloir attendre un tout petit peu avant de réaliser pleinement ce que tu souhaites.
Learning Processing de Shiffman est pas le bouquin que je préfère sur P5, tu as un FLOSS manual qui a été fait par une équipe de champions francophones, c'est en accès libre et gratuit à cette adresse http://fr.flossmanuals.net/processing/.
Pour ce qui concerne l'analyse vidéo, tu peux commencer par faire des choses simples avec les exemples de processing, dans la partie librairie/video.
Il y a plusieurs façon de détecter des choses devant une cam, c'est même un puit sans fond, tu peux t'attaquer aux mouvements, à la couleurs, aux formes ....
Une librairie reconnue en la matière est openCV comme te le conseilles emoc, la reconnaissance de visage y est implémentée assez sympathiquement.
J'ai mis en ligne une sorte de compilation de l'analyse video sous processing : https://gitorious.org/interact_workshop … TER_VISION Si tu veux y jeter un oeil ...
+++
Hors ligne
layegning a écrit:
j'ai l'impression qu'il existe une multitude de solutions par rapport à ça (OpenFrameworks, OpenCV, PureData, EyesWeb ...) mais je me perd un peu dans toute cette "folie".
Je ne connais pas eyesweb mais je peux te dire quelques mots des autres :
openCV : bibliothèque de fonctions C++ pour la Computer Vision, donc tout ce qui concerne le traitement de l'image mais aussi les fonctions évoluées comme la reconnaissance de formes, de contours, de visages. openCV comprend aussi des fonctions de « machine learning », un domaine de l'intelligence artificielle
openFrameworks, c'est un ensemble de bibliothèques de fonctions C++ adaptée à la programmation créative (image, vidéo, son, interaction). openCV intègre une partie des fonctions d'openCV
pure data : programmation graphique pour le traitement multimedia en temps réel (synthèse sonore, 3D, vidéo, interaction), pd intègre aussi une partiedes fonctions d'openCV
processing intègre aussi une partie des fonctions d'openCV via la bibliothèque que je t'ai indiqué plus haut.
Pour l'initiation au traitement d'image, processing me paraît le plus adapté. Ensuite, il y a openFrameworks qui permet de se frotter au C++. Pour le maximum de fonctionnalités, il faut utiliser directement openCV en C++ mais la pente est (très) raide si tu débutes!
Hors ligne
Pour openCV il y a aussi le projet Harpia , qui permet de générer le code C d'une appli construite graphiquement dans le GUI . http://s2i.das.ufsc.br/harpia/en/home.html ou dispo dans les dépôts Ubuntu : http://doc.ubuntu-fr.org/harpia
Permet de se faire une idée de openCV et de rafraichir ses notions de C .
Dernière modification par sakramh (2011-10-14 23:44:35)
Hors ligne
Pages: 1