Téléchargement PSP

Librairie Ultimate Head tracker (archive originale de la Librairie réservée aux développeurs)

par

Librairie Ultimate Head tracker par M-cid

Caractéristiques

  • Langue : Français
  • Taille : 241.58 Ko
  • Licence : Freeware / Gratuit
  • Site de l'éditeur : http://www.pspgen.com/forums/pspuht...04999.html
  • Note de la rédaction : Non définie
  • Note de la communauté : 2.7/5 (11 avis)
  • Votre avis :

Vous trouverez dans cette archive tout ce dont vous avez besoin pour comprendre et utiliser la librairie permettant la gestion du head tracking avec la Go! Cam par M-cid.

Nous vous rappellons que ce qui suit n'interesse que le developpeurs et que les utilisateurs peuvent directement récupérer le plugin et le programme qui servent d'exemple.

Voici la description originale donnée par l'auteur dans notre forum :

 

Ultimate Head Tracker
Librairie + exemples (Eboot et Prx)
Par mcidclan m.cid.clan[at]gmail[dot]com



Pour de meilleurs résultats lors de l'utilisation d'une application
utilisant cette librairie, respectez au mieux les recommandations suivantes :

    - Soyez dans un endroit bien éclairé.
    - Placez vous dos à un mur blanc dégagé .
    - Portez des vêtements de couleurs unies, de préférence blanc ou gris.
    - Portez un col roulé, s'il s'agit d'un Head tracking.
    - Ayez de longues manches, s'il s'agit d'un Hand tracking.



Les exemples :

Les sources des exemples sont founis. L'un est un Eboot utilisant pspgu et l'autre un prx.

L'exemple uht_guexample

    Creez un dossier dans game, copiez l'EBOOT et le PNG dans ce meme dossier.
    Connectez votre camera au port usb de la PSP.
    Lancez l'application.
    Le tracking en route, inclinez votre psp à gauche et à droite.
    SELECT pour sortir.


L'exemple uht_prx

    Activez le prx en tant que plugin game. (ou vsh)
    Si vous souhaitez le tester sur le xmb désactivez l'auto usb connection.
    Rem : Si l'utilisateur lance des applications sollicitant la go!cam le plugin sera interrompu
    Pour plus d'informations voir le source.



La librairie
Cette librairie codée en c++ permet la récupération d'informations relatives au tracking d'une partie du corps humain tel que la tête ou la main par une mise en évidence des pixels susceptibles d'appartenir à une couleur de peau.

Deux headers sont proposés, uht_utils et CamStream.h


uht_utils contient d'une part les fonctions se rapportant à la mise en évidence des pixels.
Et d'autres part les fonctions permettant de situer le nuage de pixel sur l'image.


void medianFilter(u32* in, u32* out, u8 xend, u8 yend);

Applique un flou sur les données d'une image se trouvant en mémoire,
(buffer u32 RGBA de dimension width*height et de taille dimension*sizeof(u32) )
Écrit ensuite le résultat dans un second buffer du même type.
xend doit être égale à width-1 et yend à height -1


void YCbCr(u32* in, u8* out, u16 size);

Cette fonction utilise l'espace ycbcr pour mettre en évidence les pixels susceptibles d'appartenir à
une couleur de peau. Elle convertie les informations du buffer u32 vers un buffer u8 de même
dimension et de taille dimension*sizeof(u8). Les pixels qui correspondent à la couleur de la peau
seront représentés par un 0. Et 255 au cas inverse.


void getQtInfo(u8* in, u8 *xcont, u8 *ycont, u8 xend, u8 yend);

Récupère l'information relative à la quantité de pixels noir et conserve cette information dans les
buffers xcont et ycont. xcont doit avoir pour taille width*sizeof(u8) et ycont une taille de
height*sizeof(u8)


vec4i getBeInfo(u8* in, u8 *xcont, u8 *ycont, u8 xend, u8 yend, u8 xMin, u8 yMin);

Utilise xcont et ycont pour trouver l'information concernant la position de la masse de pixel noir
contenu dans l'input buffer.


void getAbsPosition(const vec4i in, vec2i *out);
Permet de récupérer la position absolu de l'objet traquer.


void getOrtPosition(const vec4i in, vec2i *out);
Permet de récupérer la position orthogonal de l'objet traquer.


CamStream.h permet l'utilisation d'un tracker déjà opérationnel.

Créez l'objet destiné à gérer le flux vidéo et permettant la récupération
des informations relatives au tracking : myStream = new CamStream();
Passez true en paramètre du constructeur s'il s'agit d'une compilation vers un prx .

Initialisez les buffers nécessaires au travail du tracker (WW = 160 et HH = 120) :

FB_8888 un buffer alloué sur WW*HH*4 octets de type u32
FB_565 un buffer alloué sur WW*HH*2 octets de type u16
FB_TMP un buffer alloué sur WW*HH octets de type u8

myStream->initBuffer((void*)FB_8888, (void*)FB_565, (void*)FB_TMP);

Initialisez la camera. La méthode prend pour argument la priorité du thread associé au tracker .
myStream->initCam(0x27);

Vous avez la possibilité de récupérer l'id du thread ainsi : myStream->thid;

myStream->run; vous renverra false lorsque la récupération du flux échoue.
myStream->direction ; Correspond à sceUsbCamGetLensDirection();

myStream->pOut; Contient les 4 extremums du nuage de pixels appartenant à la couleur de peau.
Les extremums sont : X début, X fin et Y début, Y fin. (pOut.x, pOut.y, pOut.z, pOut.w)

delete myStream; Pour détruire le tracker dans son intégralité (libérer la mémoire, libération des
drivers et déchargement des modules). Pour ne pas prendre en compte le déchargement des modules
passez true à myStream->relativeClean.

Le gestionnaire de framesActivez le gestionnaire de frames (si besoin) . Ce dernier forcera le tracker

    à attendre un signal pour passer à la frame suivante.
    myStream->fm_activated();

    La méthode suivante renvoie true lorsque le tracker attend un signal pour continuer
    myStream->fm_isWaiting();

    Envoi un signal de passage à la frame suivante
    myStream->fm_nextFrame();