通过emgu或opencv根据图像中的某些颜色进行物体检测的最快方法

时间:2018-09-29 13:41:49

标签: c# opencv object-detection emgucv

我有一些特定颜色的列表(大约60种不同的颜色,它们不在范围内),我想通过Emgucv或opencv在图像中检测到它们。 实际上,我将通过颜色来检测一些对象,而现在我不想通过AI方法来进行检测。 通过循环执行此操作非常慢,我正在寻找最快的方法。 预先感谢。

1 个答案:

答案 0 :(得分:0)

您可以通过几个步骤进行操作:

1-只需按照以下代码即可将您的图片转换为HSV域

Image<Hsv, byte> hsv = original.Convert<Hsv, byte>()

原始图片可能是任何图片类型。

2-过滤图像:

   var m_Lower = new Hsv(mask.Hue - 5, mask.Satuation - 5, mask.Value - 5);
   var m_Higher = new Hsv(mask.Hue + 5, mask.Satuation + 5, mask.Value + 5);
   Image<Gray, byte> huefilter = hsv.InRange(m_Lower, m_Higher);

3-合并它们,最快的方法是将它们转换为位图并保存(或不保存)然后合并它们

Bitmap img3 = new Bitmap(huefilter.Width, huefilter.Height);
Graphics g = Graphics.FromImage(img3);
foreach (string file in files)
{
 img = new Bitmap(file);
 img.MakeTransparent(Color.White);
 g.DrawImage(img, new Point(0, 0));
 }

文件是保存的图像