begin process at 2012 02 10 06:47:14
  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 probleme jeu du labyrinthe (SDL) [ par abggba ] Slt tout le monde, bon voila j'ai un probleme avec mon programme qui seg fault! et en plus il n'affiche que les murs alors qu'ne fait je voudrais qu'i regulation PID d'un moteur a courant continu avec un pic16F877 [ par MEJRISAMEH ] bonjour à tous je cherche l'algorithme et le programme d'une régulation PID d'un moteur a courant continu commande par un PIC16F877 merci pour votre problème de boucle pour un affichage SDL [ par sparox1 ] Bonjour à tous, j'ai établis un début de programme de poker pour un projet à rendre dans la fin de cette année scolaire, ce programme tire 5 cartes au programme en C [ par solleil ] Bonsoir, svp,vous pouvez peut etre m'aider,je voudrais créer un programme en c qui me permet de vider l'ecran de l'hyperterminal de windows. quelqu'u rechercher un mot dans un fichier txt [ par tanguy704 ] Bonjour Je suis entrain de réaliser un jeu genre scrabble. Les mots valides proposés par les joueurs sont stockés dans un fichier txt un mot par lign GetPixel [ par fred2541 ] Bonjour J'utilise la fonction GetPixel en mode console comme indiquer dans cette exemple: http://www.cppfrance.com/forum/sujet-GETPIXEL-MODE-CONSOLE_


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
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 : 4,820 sec (3)

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