|
JLI Spieleprogrammierung
|
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
|
Verfasst am: 30.08.2007, 08:38 Titel: Bilder auschnitte überprüfen |
|
|
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 |
|
|
The Lord of Programming Living Legend
Alter: 37 Anmeldedatum: 14.03.2003 Beiträge: 3122
Medaillen: Keine
|
Verfasst am: 30.08.2007, 14:33 Titel: |
|
|
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 |
|
|
Faller Junior JLI'ler
Alter: 36 Anmeldedatum: 30.11.2006 Beiträge: 88 Wohnort: Dresden Medaillen: Keine
|
Verfasst am: 30.08.2007, 14:54 Titel: |
|
|
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 |
|
|
|
|
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
|