-2

以下函数解决了问题,但我不明白如何调用它,尤其是“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)

Bitmap SourceImg - 图片,将在其中找到 blob

int LettersCount - 我们要提取的 blob(数字)

列出 ImgLetters - ???

第三个参数有什么作用(如何调用这个函数)?

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

1 回答 1

1

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);
于 2012-02-18T17:23:03.513 回答