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