【发布时间】:2016-08-29 22:22:45
【问题描述】:
我在网上搜索了很多,找不到任何简单的解决方案。
我正在尝试创建一个人员检测器,对于这个项目,我选择了 Emgu 库。
目前我能够检测到人,但成功率不高。
我正在尝试训练我的 SVM,我在这篇文章中看到:SVM classifier based on HOG features for “object detection” in OpenCV 我需要训练的过程:
第 1 步)准备一些您要检测的对象的训练图像(正样本)。此外,您还需要准备一些没有感兴趣对象的图像(负样本)。
第 2 步)检测训练样本的 HOG 特征,并使用该特征训练 SVM 分类器(OpenCV 中也提供)。
步骤 3) 在 HOGDescriptor::setSVMDetector() 方法中使用训练好的 SVM 分类器的系数。
我有一些训练图像,我正在使用这行代码来提取 HOG 特征:
public static Image<Bgr, Byte> Resize(Image<Bgr, Byte> im)
{
return im.Resize(64, 128, Inter.Linear);
}
public static float[] GetVector(Image<Bgr, Byte> im)
{
HOGDescriptor hog = new HOGDescriptor(); // with defaults values
Image<Bgr, Byte> imageOfInterest = Resize(im);
Point[] p = new Point[imageOfInterest.Width * imageOfInterest.Height];
int k = 0;
for (int i = 0; i < imageOfInterest.Width; i++)
{
for (int j = 0; j < imageOfInterest.Height; j++)
{
Point p1 = new Point(i, j);
p[k++] = p1;
}
}
return hog.Compute(imageOfInterest, new Size(8, 8), new Size(0, 0), p);
}
但我找不到如何训练我的 SVM(上述步骤的第 2 步)。
【问题讨论】:
标签: c# opencv image-processing svm emgucv