cs_doggyk
Messages postés21Date d'inscriptionlundi 6 septembre 2004StatutMembreDernière intervention12 mars 2005
-
6 oct. 2004 à 10:31
ymca2003
Messages postés2070Date d'inscriptionmardi 22 avril 2003StatutMembreDernière intervention 3 juillet 2006
-
6 oct. 2004 à 12:37
Bonjour,
Je souhaite faire du traitement d'image à partir d'une webcam.
Je suis sur plusieurs pistes en même temps et certaines avancent bien (merci à magic_Nono , BruNews et DeAtHCrAsH).
Mais...
Je souhaite donc récupérer une image bmp à partir du clipboard pour la mettre dans un tableau. Je fais donc:
HANDLE HWnd;
OpenClipboard(NULL);
HWnd = GetClipboardData(CF_DIB);
Bon, là j'ai donc mon Handle. Si je traite les erreurs et tout, je m'aperçois que ça marche(Handle NULL si pas d'img dans clipboard...).
C'est là que cela se complique pour moi: comment est-ce que l'on récupère les données à partir du Handle?
pour info, le résultat de GetClipboardData fait que Hwnd doit pointer vers une structure :
et moi je veux plus précisément récupérer la composante bmiColors[x]...
typedef struct tagRGBQUAD {
BYTE rgbBlue; BYTE rgbGreen;
BYTE rgbRed; BYTE rgbReserved;
} RGBQUAD;
(car en fait mon tableau de retour doit être de la forme:
int Image[Largeur*3][hauteur];
...avec Largeur et hauteur fixe et connues; le *3 car RGB.... )
au final, lpMem contient les pixels du bitmap, ligne par ligne en partant du bas avec 4 octets par pixels. Le pixel (x,y) avec la convention x à gauche y en bas :