begin process at 2012 05 30 15:10:45
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Windows

 > 

Multimédia

 > 

Récupération des pixels d'une fenêtre cachée


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Récupération des pixels d'une fenêtre cachée

vendredi 21 novembre 2008 à 16:13:06 | Récupération des pixels d'une fenêtre cachée

sebcmoa

Bonjour,

Je vous expose mon problème :

- J'utilise la fonction glReadPixels sur une fenêtre invisible. Cela me retourne bien les données...mais problème connu...cette fonction est bien trop lente.

- J'essaie donc de récupérer les données de la fenêtre d'une manière plus rapide. J'ai besoin d'avoir la valeur RGBA de chaque pixel de la fenêtre pour faire des traitements dessus par la suite.

- J'ai déjà tenté de créer une texture OPENGL et de récupérer les données avec les fonctions glCopyTexImage2D suivi de glGetTexImage mais les performances ne sont pas meilleures que glReadPixels!

- Je me suis donc tourné vers l'API windows et getDIBits. getDIBits n'est pas censé me retourner les valeurs de ALPHA mais un getDIBits + un glReadPixels de la valeur ALPHA reste plus rapide qu'un glReadPixels sur les données RGBA.
J'ai donc tenté le code suivant que j'ai trouvé en fouillant la toile :

Code :
	HDC hDCMem = CreateCompatibleDC(s->native.window.hDC);
HBITMAP hBmp = NULL;
HGDIOBJ hOld;
HDC hDC;
LRESULT res;

RECT rect;
int temp,i,j;
unsigned long * temp_pix = pixels;

BITMAPINFO bitmap_info;

bitmap_info.bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
bitmap_info.bmiHeader.biWidth = width;
bitmap_info.bmiHeader.biHeight = -(signed)height;
bitmap_info.bmiHeader.biPlanes = 1;
bitmap_info.bmiHeader.biBitCount = 32;
bitmap_info.bmiHeader.biCompression = BI_BITFIELDS;
bitmap_info.bmiHeader.biXPelsPerMeter = 0;
bitmap_info.bmiHeader.biYPelsPerMeter = 0;
bitmap_info.bmiHeader.biClrUsed = 0;
bitmap_info.bmiHeader.biClrImportant = 0;
GetWindowRect(s->native.window.hWND, & rect);

hBmp = CreateCompatibleBitmap(hDCMem,width,height);
hOld = SelectObject(hDCMem, hBmp);

GetDIBits(hDCMem,hBmp,0,height,NULL,&bitmap_info,DIB_RGB_COLORS);

res = SendMessage(s->native.window.hWND, WM_PRINT, (WPARAM) hDCMem, PRF_CHILDREN | PRF_CLIENT);

res = GetDIBits(hDCMem,hBmp,0,height,pixels,&bitmap_info,DIB_RGB_COLORS);

SelectObject(hDCMem, hOld);
DeleteObject(hDCMem);
Mais je n'obtiens aucune donnée...

Quelqu'un aurait-il une petite idée de comment récupérer les données d'une fenêtre cachée?

Merci par avance.
dimanche 7 décembre 2008 à 11:39:51 | Re : Récupération des pixels d'une fenêtre cachée

SebLinck

Salut,
Avec cette méthode il semble que tu ne peut pas récupérer
les pixels des fenêtres cachées.

Cordialement,
Sébastien.


Cette discussion est classée dans : bmiheader, fenêtre, info, bitmap, hdcmem


Répondre à ce message

Sujets en rapport avec ce message

Bitmap [ par sebastienbro ] Bonjour à tous ! Voilà, en fait, je cherche à enregistrer un bitmap à partir d'un HDC ! En fait ça n'est pas pour l'enregistrer mais pour le compresse Bitmap [ par Chapi72 ] Bonjour,je développe sous devC++ et je voudrais simplement afficher un BITMAP dans une fenêtre.Voici ce que j'ai fait et évidemment ça ne marche pas!M Hwnd [ par T_Mehdi ] salut a tous .bon j'ai realiser une fonction qui permet douvrir des fichier bmp et les affichier sur un hwnd preci.le prob est que quand je reduit ou freeimage [ par valerymb ] salut à tous. J'ai un petit problème à vous soumettre.voilà. J'ai une image non sauvegardée sur le disque que j'affiche en utilisant les mfc (hdc, hbi ActiveX Flash "exporté" dans un bitmap [ par brunixxx ] Bonjour à tous,sur le site j'ai vu de très bon codes qui m'ont interessé, notamment celui de racpp http://www.cppfrance.com/code.aspx?ID=33091sur l'ut modif d'info d'une fenètre avant sa création. [ par hdaniel ] Bonjour,je cherche a modifier l'apparence d'une fenêtre par exemple un bouton visible ou pas avant la création de la fenêtre.pour que la fenêtre ai la images Bitmap sur Win32 [ par aziz1803 ] bonjour, je fais de l'acquisition d'images à partir d'une caméra Basler, et je veux afficher les images que je récupère sur une fenêtre Bitmap. j'ai à Langage C++ [ par Tom56340 ] je me présente tom voila je suis pas non plus implacable sur l'informatique cependant je touche a tout et est un niveau satisfaisant qui me vaut de m souci C++ [ par Tom56340 ] je me présente tom voila je suis pas non plus implacable sur l'informatique cependant je touche a tout et est un niveau satisfaisant qui me vaut de m


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,562 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales