ARVCamera et ARVMotorizedCamera

De Ensiwiki
Aller à : navigation, rechercher

Matériel

La salle ARV met a votre disposition 2 types de caméra:

  • des webcams USB Philips ToUcam Pro.
Arv-touchcam.jpg
  • des caméras mobiles Sony EVI-D31.
Arv-mobilecamera.jpg

Ces deux types de caméra peuvent fournir des images de résolution 640x480. ATTENTION: pour obtenir une telle résolution sous UNIX avec la ToUcam, il faut que le module pwcx soit chargé (utiliser lsmod pour vérifier).

Logiciel

Le code qui sert à faire fonctionner les caméras se trouve dans SOURCE/LOWLEVEL/VIDEO. Il est composé de deux "classes" différentes. La première permet de créer une structure caméra et d'obtenir des images de celle ci. Il s'agit de ARVCamera. Son fonctionnement pourrait etre résumé dans cette boucle:

 //création de la stucture caméra.
 //camType doit valoir 0 pour la Sony et 1 pour la ToUcam.
 ARVCameraStruct cam = ARVCamera_New(camType);
 
 //initialisation de la caméra.
 ARVCamera_Init(cam);
 
 //possibilité de récuperer les dimensions de l'image.
 ARVCamera_GetSize(cam, x, y);
 
 //démarrage de la caméra.
 ARVCamera_Start(cam);
 
 //boucle d'aquisition.
 while(aquisition){
       //mise a jour de la structure de la caméra.
       ARVCamera_Update(cam);
 
       struct timeval timeImage;
       //récupération de la date de la denière image capturée.
       ARVCamera_GetLastImageDate(cam, &timeImage );
 
       //récupération de la dernière image capturée depuis la mise à jour
       char *image = ARVCamera_GetImage(cam);
 }
 
 //arret de la caméra.
 ARVCamera_Stop(cam);
 
 //fermeture totale de la caméra.
 ARVCamera_Close(cam);

ATTENTION : si lors de l'utilsation de la camera USB (Philips ToUcam Pro), un écran vert apparait à la place du retour image; il s'agit d'un problème de driver. Pour y remédier, il faut lancer le driver pwcx (commande : insmod -f pwcx) mais ceci ne peut se faire qu'en étant administrateur de la machine. Cette manipulation devra être faite à chaque fois que la machine sera rebootée.

La seconde classe permet d'utiliser les capacités de réglage de la caméra Sony, c'est ARVMotorizedCamera. En effet, il est possible de modifier l'orientation de l'objectif ainsi que la valeur de zoom au travers du code. L'aquisition d'image se fait de façon similaire à celle montrée plus haut mais au travers de la classe ARVMotorizedCamera et la modifications des réglages se fait grâce aux commandes suivantes:

Soit par valeur des paramètres:

 //modification de l'orientation horyzontale de l'objectif.
 ARVMotorizedCamera_Pan(mcam, ValPan);
 ARVMotorizedCamera_RelativePan(mcam, IncrPan);
 
 //modification de l'orientation verticale de l'objectif.
 ARVMotorizedCamera_Tilt(mcam, ValTilt);
 ARVMotorizedCamera_RelativeTilt(mcam, IncrTily);
 
 //modification des deux angles simultanément.
 ARVMotorizedCamera_PanTilt(mcam,ValPan,ValTilt);
 
 //modification de la valeur du zoom.
 ARVMotorizedCamera_Zoom(mcam, ValZoom);
 ARVMotorizedCamera_RelativeZoom(mcam, IncrZoom);
 
 //replace la caméra dans sa position initiale.
 ARVMotorizedCamera_PanTiltGoHome(mcam);
 
 //récupération des valeurs des paramètres.
 ValZoom = ARVMotorizedCamera_GetZoomValue(mcam);
 ARVMotorizedCamera_GetPanTiltValues(mcam, &ValPan, &ValTilt);
 //ATTENTION : Ses fonctions sont coûteuses en temps et ne peuvent être utilisées dans une application temps réel.

Soit par vitesse de modification:

 ARVMotorizedCamera_SetPanSpeed(mcam, ValPanSpeed);
 ValPanSpeed = ARVMotorizedCamera_GetPanSpeed(mcam);
 
 ARVMotorizedCamera_SetTiltSpeed(mcam, ValTiltSpeed);
 ValTiltSpeed = ARVMotorizedCamera_GetTiltSpeed(mcam);
 
 ARVMotorizedCamera_SetPanTiltSpeed(mcam, ValPanSpeed, ValTiltSpeed);
 ARVMotorizedCamera_GetPanTiltSpeed(mcam, &ValPanSpeed, &ValTiltSpeed);
 
 ARVMotorizedCamera_SetZoomSpeed(mcam, ValZoomSpeed);
 ValZoomSpeed =  ARVMotorizedCamera_GetZoomSpeed(mcam);

Exemples

Quatres exemples pouvant servir de base à de futurs projets sont disponibles dans le repertoire /SOURCE/LOWLEVEL/VIDEO:

  • ARVCameraTest permet de tester la connexion des deux types de caméra en mode ARVCamera.
  • ARVCameraGLTest consiste en une application de retour caméra basée sur ARVCamera dans un contexte OpenGl.
  • ARVMotorizedCameraTest permet de tester la connexion de la caméra Sony en mode ARVMotorizedCamera.
  • ARVMotorizedCameraGLTest est une application équivalente à ARVCameraGLTest avec possibilité de modifier les paramètres de la caméra Sony grâce au clavier.
  • ARVMotorizedCameraGLTestSpeed est une application équivalente à ARVMotorizedCameraGLTest mais où les paramètres de la caméra ne sont plus gérés par leurs valeurs mais par leurs vitesses de modification.