Farbbestimmung eines Pixels



  • Moin C++ fans,
    Ich möcht ein Programm schreiben, dass die farbe eines Pixels ermittelt und dann überprüft ob es z.B. blau ist. kann mir jemand ziegen wie mann es macht oder wo steht wie das möglich ist 😕 😕

    Übrigens ich benutze DEV.Cpp 4.9.9.2 unter Windows 2000



  • int color;
    int colorblue = makecol(255,0,0);
    color = getpixel(bitmap,x,y)
    if(color==colorblue)
        cout << "pixel an stelle "<< x << " '/' " << y << " ist blau << endl; 
    else
        cout << "pixel an stelle "<< x << " '/' " << y << " ist NICHT blau << endl;
    

    so ginge es mit der http://www.allegro.cc/ Bibliothek.



  • Willst du die Pixel einer Bitmap oder eines Fensterinhaltes bestimmen?



  • Danke für die schnelle Antwort ich habe nur ein Problem, namlich ich besitze die lib allegro nicht und weiß auch nicht wie mann sie instalirt. Kann mir da jemand helfen???

    €dit: eigentlich nicht aus einer Bitmap aber das kann ja auch nicht schaden



  • Mit WinAPI:

    COLORREF colorblue = RGB(0,0,255);
    COLORREF color = GetPixel(dc,x,y);
    if(color==colorblue)
        cout << "pixel an stelle "<< x << " '/' " << y << " ist blau << endl;
    else
        cout << "pixel an stelle "<< x << " '/' " << y << " ist NICHT blau << endl
    


  • OK so weit so gut.
    Jedoch wenn ich das Programm starten möchte, dann sagt mir der Compiler, das er dc nicht kennt

    9 C:\c\Farberkennung.cpp `dc' undeclared (first use this function)

    was muss ich da tun???



  • Nun, das "dc" war Platzhalter für eine Variable vom Typ HDC. Wenn du dich mit "Device Context"en nicht auskennst, solltest du dich da vielleicht erstmal reinlesen...



  • Moin nach langer zeit.
    Ich habe etwas länger gebraucht um mir das ganze zu erarbeiten.
    Ich habe alles vervolständigt und sieht jetzt so aus:

    #include <iostream>
    #include <windows.h>
    
    int main(){
    	while(1){
                 int x;
        		 int y;
        		 y=100;
        		 x=100;
        		 int colorblue;
        		 HDC dc;
        		 COLORREF colorblue = RGB(0,0,255); 
        		 COLORREF color = GetPixel(dc,x,y); 
        		 if(color==colorblue){ 
                             std::cout << "pixel an stelle "<< x << " '/' " << y << " ist blau" << std::endl; 
                 }
                 else{ 
                       std::cout << "pixel an stelle "<< x << " '/' " << y << " ist NICHT blau" << std::endl;
                 }
    	} 
        return 0;
    }
    

    doch ich bekomme den fehler:

    14 E:\c\Farberkennung.cpp conflicting declaration 'COLORREF colorblue' 
    12 E:\c\Farberkennung.cpp 'colorblue' has a previous declaration as `int colorblue' 
    14 E:\c\Farberkennung.cpp declaration of `COLORREF colorblue' 
    12 E:\c\Farberkennung.cpp conflicts with previous declaration `int colorblue'
    

    wo liegt mein fehler? 😕 😕



  • Roby schrieb:

    Moin nach langer zeit.
    Ich habe etwas länger gebraucht um mir das ganze zu erarbeiten.
    Ich habe alles vervolständigt und sieht jetzt so aus:

    #include <iostream>
    #include <windows.h>
    
    int main(){
    	while(1){
                 int x;
        		 int y;
        		 y=100;
        		 x=100;
        		 int colorblue; // <- hier
        		 HDC dc;
        		 COLORREF colorblue = RGB(0,0,255); //<- und hier identische namen verwendet
        		 COLORREF color = GetPixel(dc,x,y); 
        		 if(color==colorblue){ 
                             std::cout << "pixel an stelle "<< x << " '/' " << y << " ist blau" << std::endl; 
                 }
                 else{ 
                       std::cout << "pixel an stelle "<< x << " '/' " << y << " ist NICHT blau" << std::endl;
                 }
    	} 
        return 0;
    }
    

    doch ich bekomme den fehler:

    14 E:\c\Farberkennung.cpp conflicting declaration 'COLORREF colorblue' 
    12 E:\c\Farberkennung.cpp 'colorblue' has a previous declaration as `int colorblue' 
    14 E:\c\Farberkennung.cpp declaration of `COLORREF colorblue' 
    12 E:\c\Farberkennung.cpp conflicts with previous declaration `int colorblue'
    

    wo liegt mein fehler? 😕 😕

    Mussdu fehlermeldung lesen, evtl. mal in DevCPP auf jede Zeile der Fehlermeldungen doppelklicken und schauen, auf welche Programmzeilen die verweisen.



  • Lern erst mal Programmieren



  • was willst du denn machen? du willst von irgend einem pixel auf deinem monitor die farbe ermitteln oder?

    Und dann?

    sowas in der art muss machen damit den DC devicecontext (die zeichenfläche deines Bildschirms) bekommst...

    HDC hDC = CreateDC("DESKTOP",0,0,0);
    //oder
    HDC hDC = CreateDC("DISPLAY",NULL, NULL, NULL);
    
    //.. hier dein code
    
    DeleteDC(hDC);
    


  • Dieser Thread wurde von Moderator/in HumeSikkins aus dem Forum C++ in das Forum WinAPI verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.


Log in to reply