Récupérer une image depuis un buffer...

Signaler
Messages postés
24
Date d'inscription
samedi 13 octobre 2007
Statut
Membre
Dernière intervention
25 novembre 2008
-
Messages postés
212
Date d'inscription
mardi 17 mai 2005
Statut
Membre
Dernière intervention
23 juin 2011
-
Bonjour à tous,

   je suis sur un projet de traitement vidéo. J'utilise une camera IP capturant un flux MJPEG en résolution 640x480. A partir du programme du constructeur de la camera (AXIS 207MW) je tente d'appliquer un algorythme de traitement d'image (détection des contours). Le problème que je rencontre (maintenant) est que je pense avoir réussit à stocker une image du flux MJPEG en tant que BITMAP dans un buffer. Cependant, je ne sais pas comment passer de ce buffer à un tableau à deux dimensions correspondant aux pixels pour ensuite appliquer mon algorithme de détection de contours (déjà développé depuis une webcam).

Pour vous dire où j'en suis, voici le petit bout de code que j'ai développé:

------------------------------------------------------------------------------------------------------------------------
VARIANT Tampon;

VARIANT vDataType;

VARIANT vType;

SAFEARRAYBOUND bounds;

long LongueurTampon = 0;
this->UpdateData();
// Set the media URL and the media type
m_AMC.SetMediaURL("http://" + m_ipText + "/axis-cgi/mjpg/video.cgi");
m_AMC.SetMediaType("mjpeg-unicast");
try
{
// Starts the download of the mjpeg stream from the Axis camera/video server
m_AMC.GetCurrentImage(1, &Tampon, &LongueurTampon);
bounds.cElements = LongueurTampon;
bounds.lLbound = 0;
vDataType.vt = VT_ARRAY |VT_UI1;
vDataType.parray = SafeArrayCreate(VT_UI1, 0, &bounds);
vType.vt = VT_ARRAY|VT_I4;
vType.intVal = 1;
void *pDest;
SafeArrayAccessData(vDataType.parray, &pDest);
BYTE *buffer = new BYTE[LongueurTampon];
memcpy(buffer,(BYTE*) pDest, LongueurTampon);
SafeArrayUnaccessData(vDataType.parray);
delete [] buffer;
m_AMC.Play();

------------------------------------------------------------------------------------------------------------------------

Si quelqu'un pouvait m'aider, je lui en serais très reconnaissant.

Cordialement,

Crepuscule3

1 réponse

Messages postés
212
Date d'inscription
mardi 17 mai 2005
Statut
Membre
Dernière intervention
23 juin 2011

Salut,

un buffer bmp est un tableau à une seule dimension (beaucoup plus rapide d'accès).
bufferbmp[longeur * largeur * 3].
le 3 pour les 3 composante R G B
bufferbmp[1] -> pixel 1 compasante rouge.
bufferbmp[2] -> pixel 1 compasante vert.
bufferbmp[3] -> pixel 1 compasante bleu.

et ainsi de suite ..

Cordialement,
Sébastien.