DIB vergleichen



  • Hallo allerseits!

    Ich hab eine Videograbberkarte und will eine Art Motion Detect programmieren.
    Ich kann über die lib der Karte Schnappschüsse im DIB format bekommen.
    Momentan lese ich mich in das Thema ein.

    Ich will immer ein DIB mit dem nächsten vergleichen. Also nur die Pixeldaten.
    Ab einer bestimmten Prozentualen unterschied erstelle ich ein jpeg daraus (macht ein anderer Thread).
    Ist das rein von der Laufzeit sinnvoll?
    Und kann mir einer sagen mit was für einer Funktion ich auf die Pixeldaten eines DIB zugreifen kann?

    Danke schon mal im voraus!!!!!!



  • Schau dir mal CreateDIBSection oder GetDIBits an



  • Ah!
    Hab mit der Suche nach GetDIBits einen Eintrag im Forum gefunden!!!
    Jetzt gehts ans schreiben....
    Danke dir!



  • Nun gut, ich hab eine kleine Frage. Diesen Code-Schnipsel hab ich ein bischen anders im Forum gefunden. Kann mir jemand sagen, wieso die Werte für
    r1,b1,g1 immer die selben sind??????

    BYTE *r1;
    BYTE *g1;
    BYTE *b1;
    for(int y = 0; y < bitmap_info1.biHeight; y++)
    {
           for(int x = 0; x < bitmap_info1.biWidth; x++)
    	{
    		fread(&r1,sizeof(BYTE),1,bmp1);
    		fread(&g1,sizeof(BYTE),1,bmp1);
    		fread(&b1,sizeof(BYTE),1,bmp1);				
    		if(x == bitmap_info1.biWidth)
    		{
    			//Abschluss-Byte lesen
    			fread(&r1,1,1,bmp1);
    		}
    	}
    }
    


  • Wann und wo überprüfst du sie denn?!



  • Ich hab sie mir ausgegeben. Hoffe das das möglich ist....

    printf("Red: %i", &r1);
    

    Kann man das so machen?????



  • Mach mal hier überall das Sternchen weg:

    BYTE *r1;
    BYTE *g1;
    BYTE *b1;
    

    Also dann so:

    BYTE r1;
    BYTE g1;
    BYTE b1;
    


  • niemayd schrieb:

    Ich hab sie mir ausgegeben. Hoffe das das möglich ist....

    printf("Red: %i", &r1);
    

    Kann man das so machen?????

    Hier müsste dann afaik das & auch noch weg 🙂



  • Hmm.... Es wird immer 1244767 ausgegeben. Komisch. Er sollte nur ein Byte auslesen wieso ist dann der Wert so groß?

    Ich erzeuge mit

    BYTE *r1;
    

    doch einen Zeiger auf ein ByteDatenTyp.
    Und in der fread Funktion weise ich dem einen Wert zu mit &r1.
    Wenn ich auf den Wert zugreifen will brauche ich dann & vor dem Bezeichner.
    Byte ist ein unsigned char und kein Zeiger auf unsigned char oder?

    Eine Frage: Steht das %i für integer?

    Sorry wenn ich dir so einen Haufen Fragen stelle....

    -----------------------------------------------------------------------------
    Edit: Ich bin dämlich. Sorry.



  • niemayd schrieb:

    Edit: Ich bin dämlich. Sorry.

    Heißt das, dass sich das Problem geklärt hat?!



  • Ja hat es. Danke für die Hilfe!
    Hab mich bei den Zeigern vertan!!! 🙄

    Michael


Anmelden zum Antworten