2014-11-17 13 views
8

Ich erhalte die folgende Ausnahme bei ProcessImage(bitmap1, bitmap2);Nicht unterstütztes Pixelformat des Quell- oder Vorlagenbildes. AForge Imaging

Unsupported Pixel Format of source or template image 

und dies ist mein Code:

public static double FindComparisonRatioBetweenImages(
    System.Drawing.Image one, System.Drawing.Image two) 
{ 
    Bitmap bitmap1 = new Bitmap(one); 
    Bitmap bitmap2 = new Bitmap(two); 

    ExhaustiveTemplateMatching tm = new ExhaustiveTemplateMatching(0); 
    TemplateMatch[] matchings = null; 

    matchings = tm.ProcessImage(bitmap1, bitmap2); // Exception occurs here! 

    return matchings[0].Similarity; 
} 

ich auch managedImage aus der unten stehenden Code in das Verfahren durchlaufen haben, aber es gibt immer noch Fehler:

UnmanagedImage unmanagedImageA = UnmanagedImage.FromManagedImage(bitmap1); 
Bitmap managedImageA = unmanagedImageA.ToManagedImage(); 
UnmanagedImage unmanagedImageB = UnmanagedImage.FromManagedImage(bitmap2); 
Bitmap managedImageB = unmanagedImageB.ToManagedImage(); 
  1. Ich habe Bilder zufällig von meinem Computer übergeben, geben sie alle eine Ausnahme.
  2. Ich habe Blank Image in Farbe in der Methode bearbeitet übergeben, es gibt immer noch Ausnahme.
  3. Auch geprüft, JPEG, PNG, BMP-Formate, nichts funktioniert.
+0

Mögliche Duplikate von https://StackOverflow.com/Questions/23586979/Aforge-Image-Processing-Exception – dbc

Antwort

12

Versuchen ExhaustiveTemplateMatching:

The class implements exhaustive template matching algorithm, which performs complete scan of source image, comparing each pixel with corresponding pixel of template.

The class processes only grayscale 8 bpp and color 24 bpp images.

So, das sind die Bildformate, die Sie verwenden müssen.

Da fordert, ein bestimmtes Pixel-Format zu konvertieren, können Sie dies tun:

public static Bitmap ConvertToFormat(this Image image, PixelFormat format) 
{ 
    Bitmap copy = new Bitmap(image.Width, image.Height, format); 
    using (Graphics gr = Graphics.FromImage(copy)) 
    { 
     gr.DrawImage(image, new Rectangle(0, 0, copy.Width, copy.Height)); 
    } 
    return copy; 
} 

Die Sie ist System.Drawing.Imaging.PixelFormat.Format24bppRgb verwenden würde.

+0

Kann ich Pixel-Format AnyYimage konvertieren – Charlie

+0

Sicher, halte eine Sekunde. – dbc

+0

versucht, es von hier http://stackoverflow.com/questions/2016406/converting-bitmap-pixelformats-in-c-sharp konvertieren, aber es gibt eine Ausnahme sagen, dass Grafiken nicht aus indizierten Pixel-Format erstellt werden können – Charlie