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);
Другие вопросы по тегам