C # и Aforge - извлечение изображений из BLOB-объектов - PullRequest
0 голосов
/ 18 февраля 2012

Следующая функция решает проблему, но я не понимаю, как ее вызвать, особенно часть "out List 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)

Растровое изображение SourceImg - изображение, где будут найдены BLOB-объекты

int LettersCount - объект, который мы собираемся извлечь (число)

out List ImgLetters - ???

Что делает 3-й параметр (как вызывать эту функцию)?

Bitmap image1 = new Bitmap(@"C:\1.png");    
..
ApplyBlobExtractor (image1, 1, ??? )
..
image2.save(@"C:\2.png")

1 Ответ

1 голос
/ 18 февраля 2012
Параметр

и out позволяет получить результаты обратно из вызова метода, отличного от возвращаемого параметра.http://msdn.microsoft.com/en-us/library/t3c3bfhx(v=vs.80).aspx

В вашем примере метод ApplyBlobExtractor, по-видимому, принимает исходное растровое изображение, а LetterCount (предположительно количество букв, которое вы ожидаете найти) затем использует этот объект Blobcounter для его измельчения.Он вернет true, если найдет то же число букв, которое вы ожидаете найти.Он также предоставит вам выходные изображения в виде списка через параметр out.

, для вызова которого будет выполнено что-то вроде ...

Bitmap img1 = new Bitmap(@"C:\1.png");

List<Bitmap> foundImages;

bool result = ApplyBlobExtractor(img1, 1, out foundImages);
...