C# und Aforge - Bilder aus Blobs extrahieren
Frage
Die folgende Funktion löst das Problem, aber ich verstehe nicht, wie man es nennt, insbesondere "Out List Imgletter" -Teil.
public static bool ApplyBlobExtractor (Bitmap SourceImg, int LettersCount, out List<Bitmap> ImgLetters)
{
ImgLetters = null;
ImgLetters = new List<Bitmap> ();
BlobCounter blobCounter = new BlobCounter ();
// Sort order
blobCounter.ObjectsOrder = ObjectsOrder.XY;
blobCounter.ProcessImage (SourceImg);
Blob[] blobs = blobCounter.GetObjects (SourceImg, false);
// Adding images into the image list
UnmanagedImage currentImg;
foreach (Blob blob in blobs)
{
currentImg = blob.Image;
ImgLetters.Add (currentImg.ToManagedImage ());
}
return ImgLetters.Count == LettersCount;
}
Jetzt schauen wir uns das an:
public static bool ApplyBlobExtractor (Bitmap SourceImg, int LettersCount, out List<Bitmap> ImgLetters)
Bitmap scresimg - Bild, wo Blobs gefunden werden
Int LettersCount - Blob, den wir extrahieren werden (Nummer)
Out List Imgletter - ???
Was macht der 3. Parameter (wie nennt man diese Funktion)?
Bitmap image1 = new Bitmap(@"C:\1.png");
..
ApplyBlobExtractor (image1, 1, ??? )
..
image2.save(@"C:\2.png")
Lösung
ein out
Mit dem Parameter können Sie Ergebnisse von einem Methodenaufruf außer dem Rückgabeparameter zurückholen. http://msdn.microsoft.com/en-us/library/t3c3bfhx(v=vs.80).aspx
In Ihrem Beispiel die Methode ApplyBlobExtractor
Es scheint eine Quellbitmap zu nehmen, und eine Buchstabencount (vermutlich die Anzahl der Buchstaben, die Sie erwarten), wird dieses Blobcounter -Objekt verwendet, um es zu zerhacken. Es wird wahr zurückgegeben, wenn es die gleiche Anzahl von Buchstaben findet, die Sie erwarten. Sie werden Ihnen auch die Ausgabebilder als Liste durch den Out -Parameter zur Verfügung stellen.
Es würde so etwas wie ...
Bitmap img1 = new Bitmap(@"C:\1.png");
List<Bitmap> foundImages;
bool result = ApplyBlobExtractor(img1, 1, out foundImages);