2012-02-18 4 views
-2

Следующая функция решает проблему, но я не понимаю, как ее называть, особенно «Out List ImgLetters».C# и Aforge - извлечение изображений из blobs

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 - блоб, что мы собираемся извлечь (номер)

out Список ImgLetters - ???

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

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

, но я уже сделал всю работу найти код .. все, что осталось вызова функции .. Вы могли бы по крайней мере объяснить, что 3-й параметр потому что я потратил несколько часов, пытаясь решить эту проблему. – Alex

+0

P.S. Я отредактировал вопрос из-за непонимания – Alex

ответ

1

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

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

назвать это было бы сделать что-то вроде ...

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

List<Bitmap> foundImages; 

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

Niiiiice !! Я не мог понять, КАК функция Boolean (true или false) может возвращать изображения! Благодаря вам я теперь знаю, что означает OUT. Для тех, кто ищет выход изображения - просто напишите: pictureBox1.Image = foundImages [1]; Эоин Кэмпбелл, ты мой герой. 3 часа похода и экспериментирования, наконец, конец;) – Alex