【问题标题】:Replace specific color pixels in an image替换图像中的特定颜色像素
【发布时间】:2014-02-12 20:05:21
【问题描述】:

我通过 C# 中的网络摄像头捕获的图像很少。我想对这些图像做一些处理。我想从不是黑色的图像中删除像素。

请告诉我如何删除不是黑色的像素或区域并将其替换为白色。

例子:

我想把它转换成这样:

【问题讨论】:

  • 但是边框也是黑色的,你将如何分离图像上黑色实体的语义?我建议看看:opencv.org 和互联网上可用的相关 .net 包装器

标签: c# image


【解决方案1】:

尝试使用Emgu CV(.NET中的OpenCV),具体见License Plate Recognition in CSharp示例。

【讨论】:

    【解决方案2】:

    最简单的方法可能是检查每个像素并验证它是否在“可接受”的颜色范围内。

    例如:

    var YourImage = (Bitmap)Image.FromFile("LicensePlate.png");
    
    for (var x = 0; x < YourImage.Width; x++)
       for (var y = 0; y < YourImage.Height; y++) {
           var pixel = YourImage.GetPixel(x, y);
           if (pixel.r > 200 && pixel.g > 200 && pixel.b > 200)
                    YourImage.SetPixel(x, y, Color.White);
       }
    

    以上代码会将非黑色区域替换为白色像素。

    【讨论】:

    • 这太慢了。 GetPixel/SetPixel 方法真的很慢。
    【解决方案3】:

    用于 OpenCV 的 EmguCV 包装器是一个好的开始,车牌应该可以帮助您完成大多数情况。如果您想要更强大的东西(照明变化),我建议您添加 wolf 的二值化。我不知道它是否在 EmguCV 中实现,但在 http://liris.cnrs.fr/christian.wolf/software/binarize/ 有可用的 c++ 代码 使用 EmguCV 很容易适应 c#。

    【讨论】:

      猜你喜欢
      • 2013-01-12
      • 1970-01-01
      • 2022-07-04
      • 2018-05-11
      • 1970-01-01
      • 2013-03-01
      • 1970-01-01
      • 2018-01-19
      • 1970-01-01
      相关资源
      最近更新 更多