JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

 
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen 
 medals.php?sid=6973b36b4f9460a4c22421f423c44b60Medaillen   RegistrierenRegistrieren   ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

Bilder auschnitte überprüfen

 
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Entwicklung
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Faller
Junior JLI'ler


Alter: 36
Anmeldedatum: 30.11.2006
Beiträge: 88
Wohnort: Dresden
Medaillen: Keine

BeitragVerfasst am: 30.08.2007, 08:38    Titel: Bilder auschnitte überprüfen Antworten mit Zitat

Hallo

Ich arbeite gerade an einem Bilder übertragungs Programm.
Wenn jetze 2 änliche Bilder übertragen möchte brauch ich ja nicht das ganze Bild nochmal senden.

Nun brauch mein "Bild underschied finden Programm" extrem lange und ich suche nach ansätzen wie ich dies schnell machen kann.

also ich arbeite mit windows xp sirves Pack 1
Visuel Studio 6.0

es ist ein Win main projekt und hier mal ein Bischen code.


Als erstes Lade ich die beiden Bilder
CPP:
void bild_1_laden()
{
   HBITMAP hbm = (HBITMAP)LoadImage(NULL,"screen.bmp",IMAGE_BITMAP,0,0,LR_LOADFROMFILE );
   HDC     hdcMem = CreateCompatibleDC(Bild1);
   HBITMAP hbmOld = (HBITMAP)SelectObject(hdcMem, hbm);
   BITMAP bm;
   GetObject(hbm, sizeof(bm), &bm);
   BitBlt(Bild1,0,0,bm.bmWidth,bm.bmHeight,hdcMem,0,0,SRCCOPY );

   SelectObject(hdcMem, hbmOld);
   DeleteDC(hdcMem);
}

void bild_2_laden()
{
   HBITMAP hbm = (HBITMAP)LoadImage(NULL,"screen2.bmp",IMAGE_BITMAP,0,0,LR_LOADFROMFILE );
   HDC     hdcMem = CreateCompatibleDC(Bild2);
   HBITMAP hbmOld = (HBITMAP)SelectObject(hdcMem, hbm);
   BITMAP bm;
   GetObject(hbm, sizeof(bm), &bm);
   BitBlt(Bild2,0,0,bm.bmWidth,bm.bmHeight,hdcMem,0,0,SRCCOPY );

   SelectObject(hdcMem, hbmOld);
   DeleteDC(hdcMem);
}


Dies funktioniert und ist auch sehr schnell.

nun über prüffe ich pixel für pixel was für ein rgb wert wo ist und wenn der underschiedlich ist dann merke ich mir den.

CPP:
for(z=0;z<1280;z++)
            {
               for(i=0;i<800;i++)
               {
                  crColor2=GetPixel(Bild2,i,z);
                  crColor1=GetPixel(Bild1,i,z);
                  if(crColor2!=crColor1)
                  {
                     if(start==true)
                     {
                        hx=i;
                        hy=z;
                        start=false;
                     }
                     else
                     {
                        nx=i;
                        ny=z;
                     }
                     
                  }

               }
            }


so für diese Schleife brauch er 7,7 sek ohne die getpixel nadürlich nur 0,0

Also ligt der grosse zeit verlust an dem getpixel doch wie komme ich anders an die einselnen Pixel?

oder kann ich ihrgentwie das bild umwandeln so das ich nur rgb werte habe die ich dann vergleichen kann.

mfg Faller

ps wenn ich hab hier bei google bei zyx und bei tutorials gesucht für sowas gibts bestimmt nen fach begriff plos wie heist der wenn man ihn mir sagt werde ich sofort danach suchen.
_________________
versuche alles nur wann und wie ist die frage
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
The Lord of Programming
Living Legend


Alter: 37
Anmeldedatum: 14.03.2003
Beiträge: 3122

Medaillen: Keine

BeitragVerfasst am: 30.08.2007, 14:33    Titel: Antworten mit Zitat

GetPixel() ist soweit ich weiß recht lahm.

Es sollte auch irgendwie möglich sein, deine beiden Bilder zu locken und so direkt auf den Speicher zuzugreifen. Wenn das mit einer HBITMAP nicht gehen sollte, wäre vllt. der Umweg über ein Surface nicht verkehrt, weil du dir dadurch viel einsparen kannst.

PS: Bitte in Zukunft cpp-Tags anstatt der code-Tags benutzen.
_________________
www.visualgamesentertainment.net
Current projects: RDTDC(1), JLI-Vor-Projekt, Tetris(-Tutorial), JLI-Format
(1) Realtime Developer Testing and Debugging Console


Anschlag, Anleitung zum Atombombenbau, Sprengkörper...
Hilf Schäuble! Damit er auch was findet...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Faller
Junior JLI'ler


Alter: 36
Anmeldedatum: 30.11.2006
Beiträge: 88
Wohnort: Dresden
Medaillen: Keine

BeitragVerfasst am: 30.08.2007, 14:54    Titel: Antworten mit Zitat

Danke für die schnelle Antwort "The Lord of Programming"

Da stellt sich die frage wie locke ich etwas.

Hab noc nicht danach gesucht hab gerade net also viel zeit.
Wenns jemand weis einfach mal kurz reinschreiben.

Surfurce muss ich auch mal suchen.

hab aber folgende funktion gefunden in der MSDN
CreateBitmapIndirect()
Finde dazu aber keine Beispiele wie man das nutz rein nach MSDN
Soll mir die Funktion eine eine handel zurück geben das die flächen gleicher art beherbergt.

Dann müste ich nur noch die flächen verkleichen und hätte meine änderungen.

so hat jemand schon mal diese Funktion genutzt oder weis wie man sie benutzt

MFG Faller

[edit] also das mit dem surface ist direkt ix soweit ich das sehe und da mein projekt keine abhängigkeiten habe darf wird das wohl nix
(das hab ich zumindestns ruasbekommen beim suchen im forum)

wie ich ein bitmap locke weis ich nicht und hab hier und bei goggel nix gefunden

Wäre net wenn du noch ein bischen ausführlicher wirst thx
_________________
versuche alles nur wann und wie ist die frage
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Entwicklung Alle Zeiten sind GMT
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.


Powered by phpBB © 2001, 2005 phpBB Group
Deutsche Übersetzung von phpBB.de

Impressum