【发布时间】:2019-03-05 06:05:05
【问题描述】:
我有一个数组中某些颜色的列表(大约 60 种不同的颜色,它们不在一个范围内),我想通过 Emgucv 或 opencv 在图像中检测它们。 实际上我要通过颜色来检测一些物体,我现在不想通过人工智能方法来做。 通过循环执行此操作非常慢,我正在寻找最快的方法。 提前致谢。
【问题讨论】:
标签: c# opencv object-detection emgucv
我有一个数组中某些颜色的列表(大约 60 种不同的颜色,它们不在一个范围内),我想通过 Emgucv 或 opencv 在图像中检测它们。 实际上我要通过颜色来检测一些物体,我现在不想通过人工智能方法来做。 通过循环执行此操作非常慢,我正在寻找最快的方法。 提前致谢。
【问题讨论】:
标签: c# opencv object-detection emgucv
您只需几个步骤即可完成:
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));
}
文件是保存的图像
【讨论】: