C# и Aforge - извлечение изображений из BLOB-объектов
Следующая функция решает проблему, но я не понимаю, как ее вызвать, особенно часть "Из списка ImgLetters".
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;
}
Теперь давайте посмотрим на это:
public static bool ApplyBlobExtractor (Bitmap SourceImg, int LettersCount, out List<Bitmap> ImgLetters)
Bitmap SourceImg - картинка, где будут находиться капли
int LettersCount - блоб, который мы собираемся извлечь (число)
из списка ImgLetters -???
Что делает 3-й параметр (как вызвать эту функцию)?
Bitmap image1 = new Bitmap(@"C:\1.png");
..
ApplyBlobExtractor (image1, 1, ??? )
..
image2.save(@"C:\2.png")
1 ответ
out
Параметр позволяет получить результаты обратно из вызова метода, отличного от возвращаемого параметра. http://msdn.microsoft.com/en-us/library/t3c3bfhx%28v=vs.80%29.aspx
В вашем примере метод ApplyBlobExtractor
кажется, что он принимает исходное растровое изображение и LetterCount (предположительно, количество букв, которое вы ожидаете найти), а затем использует этот объект Blobcounter для его измельчения. Он вернет true, если найдет то же число букв, которое вы ожидаете найти. Он также предоставит вам выходные изображения в виде списка через параметр out.
позвонить это сделало бы что-то вроде...
Bitmap img1 = new Bitmap(@"C:\1.png");
List<Bitmap> foundImages;
bool result = ApplyBlobExtractor(img1, 1, out foundImages);