begin process at 2010 02 10 01:44:55
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Windows

 > 

MFC

 > 

Rechercher une Pixel dans l'ecran courant


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

Rechercher une Pixel dans l'ecran courant

mercredi 16 juillet 2008 à 15:08:07 | Rechercher une Pixel dans l'ecran courant

foyfinou

Bonjour,

Je voudrai developper une appli qui devra chercher la position de toutes les pixels rouges par exemple, dans l'écran courrant.
J'ai deja avancer en utilisant GetPixel() mais j'ai rencontré des difficultés :

- GetPixel assez lent apperement et je n'ai pas trouvé de tuto très detaillé quand à l'utilisation de GetDIBits et je n'ai pas su l'utiliser.
- Ma fonction de 'recherche' est en fait un GetPixel(x,y) avec x et y des nombres aleatoires dans des intervales. Je recherche une 'fonction' plus performante que celle la..

Si quelqu'un peut m'apporter son aide pour un des deux problemes,  qu'il n'hésite pas!

Foyfinou.
mercredi 16 juillet 2008 à 16:01:43 | Re : Rechercher une Pixel dans l'ecran courant

thorodin

Pourquoi est ce que tu ne parcoures pas toute l'image avec deux boucles for?
tu pourrais utiliser
GetBitmapDimensionEx pour connaitre les dimensions puis comparer
avec le rouge 255 0 0 pour COLORREF
mercredi 16 juillet 2008 à 16:26:51 | Re : Rechercher une Pixel dans l'ecran courant

thorodin

sinon j'ai trouvé un exemple d'utilisation de GetDIBits sur un projet de ce site

http://www.cppfrance.com/codes/GET-SETDIBITS_38788.aspx
mercredi 16 juillet 2008 à 16:31:01 | Re : Rechercher une Pixel dans l'ecran courant

foyfinou

En fait, je recherche les pixel de couleur rouge mais seulement au centre de l'écran, dans un carré de 400 pixel a peu près.
Au début, je faisait bien 2 boucles for imbriquées mais au final je me suis dit que la recherche serait surment plus fructueuse en recherchant aléatoirement dans ce carré.
les valeurs de x vont de 312 à 712 et y de 184 à 584.
mercredi 16 juillet 2008 à 16:33:08 | Re : Rechercher une Pixel dans l'ecran courant

foyfinou

Oui je l'avai aussi trouvé mais je n'ai pas réussi ni à bien comprendre, ni  a réutiliser ce code. ^^
mercredi 16 juillet 2008 à 16:54:05 | Re : Rechercher une Pixel dans l'ecran courant

thorodin

tu peux être plus rapide en prenant un pixel sur deux voire un sur quatre, ça veut dire
quoi aléatoirement?
mercredi 16 juillet 2008 à 17:23:05 | Re : Rechercher une Pixel dans l'ecran courant

thorodin

C quoi comme image que tu manipules est ce que tu as des pixels qui sont rouges exactement c'est à dire 255 0 0 ou tu réalises un test  du style R>(G+B) pour trouver
des valeurs qui se rapprochent du rouge???
mercredi 16 juillet 2008 à 20:43:44 | Re : Rechercher une Pixel dans l'ecran courant

foyfinou

En fait ce que je cherche ce sont des caracteres rouges.
Je vais mettre mon code ce sera plus simple... mais il y a une erreur que je ne trouve pas lol ^^ : la couleur retournée est toujours 255,255,255... :


#include <windows.h>
#include <conio.h>
#include <stdio.h>
#include <time.h>


int main (void)
{
    HWND hwnd = GetDesktopWindow();      
    HDC hdc;
    hdc = GetDC(hwnd);
    long redValue, greenValue, blueValue;
   
    COLORREF color;
    POINT p;
    GetCursorPos(&p);

    int PixelX=p.x-150;
    int PixelY=p.y-150;
    float test=0;
       
    while (PixelY<p.y+150)
    { 
        PixelX=p.x-150;
        while (PixelX<p.x+150)
        {
            color = GetPixel(hdc, PixelX, PixelY);
           
            redValue = GetRValue(color);
            greenValue = GetGValue(color);
            blueValue = GetBValue(color);
            printf("%i  %i %i\n",redValue,greenValue,blueValue); 

            if (redValue>250&&greenValue<30&&blueValue<30)
            {
               //printf("Pixel rouge à : x : %i  et y : %i \n Valeur : R=%i G=%i B=%i\n",PixelX,PixelY,redValue,greenValue,blueValue); 
               SetCursorPos(PixelX,PixelY);
               mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);
               mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);
               Sleep(5000);             
            }
            PixelX=PixelX+5;  
           
        }
       
        if (PixelY>p.y+130)
        {
           GetCursorPos(&p);
           PixelY=p.y-150;
        }
        PixelY=PixelY+5;
        getch();
    }
    system("PAUSE");    
}




Cette discussion est classée dans : ecran, pixel, rechercher, getpixel, courant


Répondre à ce message

Sujets en rapport avec ce message

SetPixel et GetPixel [ par Adeon ] Salut je n'arrive pas a me servir de SetPixel() et GetPixel() en API. Je sais que ca existe mais j'ai des erreurs tout le temps quand je m'en ser. QQ Rechercher le répertoire courant - MFC [ par marcel6566 ] Bonjour,Quelqu'un peut-il me dire quelle fonction doit-on utiliser pour qu'elle retourne le répertoire courant, ainsi que la classe associée.Merci Reconnaissance d'une couleur de pixel sur l'ecran puis action [ par fifoue71 ] Bonjours, Voila je suis débutant de chez débutant dans la programmation et j'ai du mal a m'en sortir donc je fait appel a vous : Je voudrait créer PB poilu de Stack 0verFlow (c++) [ par toufleboss ] Ci joint un algo de détourage d'un bmp de qq lignes :Le Binze c'est que des que la zone a détourée est trop importante je me tape un Stack overflow (l Effacer le contenu d'une fenetre... [ par Galmiza ] Salut,Actuellement, pour effacer l'ecran je trace un rectangle plein blanc sur la fenetre.Or bizarrement, cette methode fait anormalement ramer le PC connaitre la couleur d un pixel sous windows [ par vychnou ] Bonjour a tous!Mon probleme:j ai besoin de connaitre la couleur d un pixel particulier(par exemple celui pointé par la souris ou bien un pixel dont on Pb avec Template [ par Diabolus ] Salut à tous,J'ai un problème avec les templates. Je veux faire une liste chainée qui fonctionne avec les templates.Mon problème arrive au moment où j pb : lecture d'un fichier bmp, "decalage" [ par fiston_67 ] Le problème est le suivant : je souhaite lire un fichier bmp couleur 24 bits et 16 millions de couleur, et stocker le resultat dans 3 matrices rouge, Zone Client = Ecran [ par Homere ] Bonjour,J'aimerais savoir comment on fait pour avec tout l'écran comme zone client. Je me sert de setpixel() pour dessiner un pixel, mais je suis touj Dessiner sur tout l'ecran [ par memiks ] Voila, je voudrais pouvoir déssiner sur tout l'écran comme si je prenais des notes avec un feutre sur mon écran.J'ai penser à creer une fenetre transp


Nos sponsors


Sondage...

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
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,608 sec (3)

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