rebol + 4 webcams
bourgea17-Dec-2007/17:22:55+1:00
Bonjour à tous, reboliens et reboliennes

Presque tout est dans le titre : je souhaiterais "surveiller" des sites industriels avec des PCs sous Linux + Rebol + 4 webcams en USB par site

Pouvez-vous me donner quelques pistes pour "bien démarrer" ?
Je connais un peu Rebol pour l'avoir tester vers 2002/2003. Je sais, c'est vieux !!!

Voici mes 4 webcams USB vues "matériellement" par un PC sur un des sites :
$ lsusb
..........
Bus 001 Device 007: ID 046d:08ad Logitech, Inc.
Bus 001 Device 006: ID 046d:08ad Logitech, Inc.
Bus 001 Device 005: ID 046d:08ad Logitech, Inc.
Bus 001 Device 004: ID 046d:08ad Logitech, Inc.
.........

Merci par avance de vos idées
guest217-Dec-2007/21:47:10+1:00
Vaste sujet:
Tout d'abord, Rebol ne sait pas gérer les webcams usb en natif.
Donc il te faudra, au choix:
1/ Rebol command (payant) pour appeler des fonctions externes (dll ou iso) te permettant de récupérer les images.
2/ Utiliser un outil qui est capable d'envoyer les images de tes webcams à intervalle régulier vers un port tcp ou dans un fichier.

Je n'ai pas Rebol command mais pour la deuxième solution, si tu t'y connais un peu en C, tu peux toi même développer cet outil en utilisant la librairie openCV qui est très simple à utiliser.
Personnellement j'ai fait des tests avec Ch (un C interprété) et openCV et ça marche très bien, surtout qu'il y'a des exemples pour traiter précisemment ton cas.

Exemple d'un programme que j'ai fait en m'inspirant des exemples et qui affiche simplement dans une fenêtre le contenu de la première webcam de ton PC.
#include "cv.h"
#include "highgui.h"

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <assert.h>
#include <math.h>
#include <float.h>
#include <limits.h>
#include <time.h>
#include <ctype.h>

#ifdef _EiC
#define WIN32
#endif

int main(int argc, char** argv ) {

/*CvCapture* capture = cvCreateCameraCapture(0);*/


CvCapture* capture = 0;
capture = cvCaptureFromCAM(0);

if (!capture) {
    return 0;
}

cvNamedWindow("Camera", 1);

IplImage* image = 0;
do {
    cvGrabFrame(capture);
    image = cvRetrieveFrame(capture);
    if (image) {
        cvShowImage("Camera", image); 
        cvWaitKey(10);
    }
} while (image);
cvDestroyWindow("Camera");
return 0;
}
bourgea18-Dec-2007/11:53:19+1:00
Ok merci pour la réponse

Guest2 a dit : <<<<Rebol ne sait pas gérer les webcams usb en natif.>>>>
===> dommage, j'espérais que la Rebolution aille aussi dans ce sens !
Guest a dit : <<<<tu peux toi même développer cet outil en utilisant la librairie openCV qui est très simple à utiliser.>>>
===> merci, je vais regarder de ce coté ....

Je ne peux m'empêcher d'être déçu tout de même par Rebol On dirait que ce langage veut se limiter aux réseaux et BD et semble totaelement (ou presque) ignorer les "périphériques" !
Je me souviens que lors de mes tests de 2002/2003, j'avais eu les pires difficultés pour gérer un simple port série
Aujourd'hui, c'est l'USB et le problème reste le même .....
guest218-Dec-2007/14:24:25+1:00
ailleunno, ailleunno...

Sinon j'ai trouvé 'motion sous debian, il m'a l'air vraiment bien ce petit utilitaire qui créé des snapshots datés dès que y'a du mouvement devant ta caméra.
guest218-Dec-2007/14:47:59+1:00
J'ajouterais que RT s'est toujours limité à intégrer des fonctions portables vers le maximum d'OS et que donc voilà...

Mais c'est vrai que les cameras USB sont maintenant largement supportés par tous les OS, ça ne devrait donc pas poser de problème insoluble de développer un scheme dans le futur R3.
Si c'est pas fait sous forme de scheme (donc de port natif dans REBOL) y'aura toujours la solution d'intégrer des apis vers des solutions comme openCV et honnêtement, ça, c'est pas super compliqué.

En parlant d'openCV, je dois dire qu'à part le support des webcams qui est bien pratique, les autres fonctions de manipulation d'images de cette librairie sont déjà pour l'essentiel présentes en natif dans REBOL.

Par exemple, faire un algo de détection de mouvement dans une suite d'images, avec REBOL ça se fait en quelques lignes et c'est pas forcemment lent vu qu'on utilise des dialectes comme effect ou draw ainsi que des opérateurs binaires ou de convolution (natifs en REBOL, merci AGG).

openCV a aussi un algo de détection de visage mais franchement ça marche pas bien et c'est super lent (sur mon celeron).

Une autre librairie pour laquelle il serait intéressant de developper des APIs c'est ARToolkit (http://www.hitl.washington.edu/artoolkit/) j'ai pas encore testé mais y'a des applications sympas à la clé.
guest218-Dec-2007/22:26:54+1:00
Sur la mailing list, y'a un mec qui a écrit un tuto pour faire ton truc en Rebol. Il utilise une solution à base de serveur web, avec un cgi (j'ai pas vu le source) qui s'occupe de la capture de l'image de la webcam.
http://musiclessonz.com/rebol.html
guest218-Dec-2007/22:32:07+1:00
L'avantage de cette dernière solution c'est que pour obtenir une image t'as juste à balancer un read htétép://../image.cgi en REBOL.
Y'a pas plus simple.
jocko19-Dec-2007/10:11+1:00
Sous Windows, il existe un excellent petit programme, qui active la webcam USB, ou tout type de caméra connectée au PC et uploade les images vers un serveur FTP (qui peut être local ou distant). C'est un jeu d'enfant de récupérer ces images et de les afficher avec Rebol: booruWebCam (http://www.booru.net)
bourgea19-Dec-2007/12:27:07+1:00
merci à tous de vos réponses

je vais suivre les diverses pistes, mon projet étant de tenter d'utiliser le plus possible Rebol pour mettre en oeuvre les diverses fonctionnalités logicielles à implanter sur les PCs industriels sous Linux :
-1 télésurveillance vidéo
-2 process industriel géré par automatismes
-3 supervision du process industriel
-4 archivage et horodatage d'événements
-5 calculs statistiques.

Je pense donc effectivement utiliser des logiciels existants pour prendre en charge certaines des fonctionnalités définies ci-dessus, mais j'aurais souhaité que Rebol occupe une large part, notamment les points 4 et 5, et éventuellement le 1 ..........

Login required to Post.


Powered by RebelBB and REBOL 2.7.8.4.2