Sites


openFrameworks

Ouvrir un flux vidéo (fichier)

L'objet ofVideoPlayer

dqsdqsdqsdqsdqdqd

qsdqsdqsd

qsdqsdqsd

Ouvrir un flux webcam

L'objet ofVideoGrabber

Dans le fichier ofApp.h, déclarez un objet ofVideoGrabber:

ofVideoGrabber camera;

Dans ofApp.cpp, initialisez votre objet dans le setup avec la méthode initGrabber() qui prend pour paramètres les dimensions de la capture (largeur, hauteur):

void ofApp::setup(){
    camera.initGrabber(320,240);
}

Pour récupérer les données envoyées par la caméra, utilisez la fonction .update dans la "superfonction" du même nom.

void ofApp::update(){
    camera.update();
}

Et enfin affichez l'image avec la méthode draw dans la superfonction du même nom.  Les deux paramètres permettent de placer l'image dans le plan.

void ofApp::draw(){
    camera.draw(0, 0);
}

Traitement sur des données tampon

???

Lorsque que l'on charge un son ou une vidéo sur internet, le flux est enregistré de façon temporaire dans une mémoire active de l'ordinateur (Fait penser à Bergson, matière et mémoire). Eh bien pour le flux vidéo provemnant d'une webcam, c'est assez similaire. Le tampon est comme une marque d'oreiller sur le visage: elle persiste mais n'est jamais définitive.

Nous pouvons traiter en direct les données tampons de l'image du flux webcam (data de pixels). Pour cela, il nous faudra stocker tout un lot de données. Nous utiliserons des variables de types unsigned char, car nous stockerons un ensemble de valeur positives (non signées, non négatives) comprises entre 0 et 255 (1octet <=> 8 bits). Comme une image est un ensemble de données (une matrice) nous allons le sous-entendre aevc une astérisque (*). Une couleur est codée sur 3 ou 4 octets (RVB ou RVBA), donc nous aurons besoin de stocker la largeur de l'image fois la hauteur de l'image fois trois pour avoir toutes les données. Nous aurons donc ce pointeur, qui pointe vers des données (la ou sont stockées les données courantes) qui seront reconstitutuées dans une texture pour redonner une image.

Déclarer un unsigned char*:

unsigned char* invertedVideoData;

Pour la reconstitution des données en texture, il faut déterminer la nature de ce nouveau tissu:

texture.allocate(w, h, GL_RGB);

Ensuite, dans le update du programme, les données tampon doivent s'actualiser "au rythme" de la vidéo, donc si et seulement si il y a de nouvelles données qui arrivent. Il nous faut obtenir le pointeur des données tampon de l'image courante:

 

 

La fonction ofImage::grabScreen()

qsdqsdqsd

Autres entrées vidéos (Firewire, ethernet, Canon)

qsdqsd

Il y a une erreur de communication avec le serveur Booktype. Nous ne savons pas actuellement où est le problème.

Vous devriez rafraîchir la page.