Pixel/Bildvergleich



  • Guten Abend Community,

    ich habe vor mit .NET folgendes zu machen:
    Auf meinem Desktop sind verschiedene .png Dateien (könnte ich, wenn es sein muss auch in ein anderes Format konvertieren), welche ich mit einem bestimmten Bereich auf meinem Bildschirm vergleichen muss. D.h., wenn die Bilder 200x200 groß sind, will ich sie mit einem Bereich auf meinem Bildschirm, der ebenfalls 200x200 groß ist, vergleichen. Gibt es da wieder ein paar Zauberklassen von .NET, die mir das ermöglichen könnten?
    Über Tipps und Schlüsselwörter würde ich mich freuen 🙂

    Mit freundlichen Grüßen,
    Freaky



  • morgen ,
    könntest es in ein system.drawing.bitmap laden und
    dann müsstest du die Pixel einzeln vergleichen.

    if (bmp1.GetPixel(x, y) != bmp2.GetPixel(x, y))
    

    lg

    ....allerdings nicht besonders schnell 😉


  • Administrator

    Wie man Bilder direkt mit .Net vergleichen kann, weiss ich nicht. Auch kenne ich keine Bibliothek dazu. Es gibt aber Möglichkeiten die einzelnen Pixel etwas schneller als über GetPixel zu vergleichen:
    http://msdn.microsoft.com/en-us/library/5ey6h79d.aspx

    So holst du dir die Daten und mit der Klasse Marshal kannst du dann auf die Daten zugreifen. Ich könnte mir vorstellen, dass du damit um einiges schneller bist, aber halt noch nicht an Geschwindigkeiten mit C oder C++ herankommst.

    Wäre übrigens auch noch eine Möglichkeit. Könntest diese Arbeit einer C DLL auslagern. In C gibt es viele Bildverarbeitungs-Bibliotheken oder ähnliches.

    Grüssli



  • Hier eine schnellere Variante von GetPixel: http://www.mycsharp.de/wbb2/thread.php?threadid=29667

    Und hier noch eine MemBitmap-Klasse: http://www.mycsharp.de/wbb2/thread.php?threadid=59354

    Edit: man sollte auch die 2. Link-Adresse kopieren...



  • Vielen Dank für die Antworten, ich werde mich mal mit euren Links beschäftigen. Übrigens, die Geschwindigkeit spielt hier absolut keine Rolle. Das Programm kann sich ruhig ein bisschen Zeit lassen :).

    Mit freundlichen Grüßen,
    Freaky


Log in to reply