Pedestrian Detection in CSharp
Jump to navigation
Jump to search
System Requirement
Component | Requirement | Detail |
---|---|---|
Emgu CV | Version 2.0.1.0 | Available from SVN only |
Operation System | Cross Platform |
Source code
static void Run()
{
Image<Bgr, Byte> image = new Image<Bgr, byte>("pedestrian.png");
Stopwatch watch = Stopwatch.StartNew();
Rectangle[] regions;
//check if there is a compatible GPU to run pedestrian detection
if (GpuInvoke.HasCuda)
{ //this is the GPU version
using (GpuHOGDescriptor des = new GpuHOGDescriptor())
using (GpuImage<Bgr, Byte> gpuImg = new GpuImage<Bgr,byte>(image))
using (GpuImage<Bgra, Byte> gpuBgra = gpuImg.Convert<Bgra, Byte>())
{
des.SetSVMDetector(GpuHOGDescriptor.GetDefaultPeopleDetector());
regions = des.DetectMultiScale(gpuBgra);
}
}
else
{ //this is the CPU version
using (HOGDescriptor des = new HOGDescriptor())
{
des.SetSVMDetector(HOGDescriptor.GetDefaultPeopleDetector());
regions = des.DetectMultiScale(image);
}
}
watch.Stop();
foreach (Rectangle pedestrain in regions)
{
image.Draw(pedestrain, new Bgr(Color.Red), 1);
}
ImageViewer.Show(
image,
String.Format("Pedestrain detection using {0} in {1} milliseconds.",
GpuInvoke.HasCuda ? "GPU" : "CPU",
watch.ElapsedMilliseconds));
}