1

我以前从未做过图像处理。

我现在需要浏览来自相机的许多 jpeg 图像,以丢弃那些非常暗(几乎是黑色)的图像。

是否有我可以使用的免费库 (.NET)?谢谢。

4

2 回答 2

3

Aforge是一个很棒的图像处理库。特别是Aforge.Imaging大会。您可以尝试应用阈值过滤器,并使用区域或 blob 运算符并从那里进行比较。

于 2012-08-18T08:26:12.267 回答
1

我需要做同样的事情。我想出了这个解决方案来标记大部分黑色图像。它就像一个魅力。您可以增强它以删除或移动文件。

// set limit
const double limit = 90;

foreach (var img in Directory.EnumerateFiles(@"E:\", "*.jpg", SearchOption.AllDirectories))
{
    // load image
    var sourceImage = (Bitmap)Image.FromFile(img);

    // format image
    var filteredImage = AForge.Imaging.Image.Clone(sourceImage);

    // free source image
    sourceImage.Dispose();

    // get grayscale image
    filteredImage = Grayscale.CommonAlgorithms.RMY.Apply(filteredImage);

    // apply threshold filter
    new Threshold().ApplyInPlace(filteredImage);

    // gather statistics
    var stat = new ImageStatistics(filteredImage);
    var percentBlack = (1 - stat.PixelsCountWithoutBlack / (double)stat.PixelsCount) * 100;

    if (percentBlack >= limit)
        Console.WriteLine(img + " (" + Math.Round(percentBlack, 2) + "% Black)");

    filteredImage.Dispose();
}

Console.WriteLine("Done.");
Console.ReadLine();
于 2012-08-30T02:06:08.947 回答