Difference between revisions of "Pedestrian Detection in CSharp"

From Emgu CV: OpenCV in .NET (C#, VB, C++ and more)
Jump to navigation Jump to search
(Updated source code with GPU processing)
Line 3: Line 3:
 
!Component || Requirement || Detail  
 
!Component || Requirement || Detail  
 
|-
 
|-
|Emgu CV || [[Version_History#Emgu.CV-2.0.1.0|Version 2.0.1.0]] || Available from SVN only
+
|Emgu CV || [[Version_History#Emgu.CV-2.2.1|Version 2.2.1]] || For GPU mode to be enabled please make sure the [http://developer.nvidia.com/object/cuda_3_2_downloads.html latest cuda graphic card driver] from NVIDIA is installed.
 
|-
 
|-
 
|Operation System || Cross Platform ||
 
|Operation System || Cross Platform ||
 
|}
 
|}
 
  
 
== Source code ==
 
== Source code ==

Revision as of 21:26, 28 January 2011

System Requirement

Component Requirement Detail
Emgu CV Version 2.2.1 For GPU mode to be enabled please make sure the latest cuda graphic card driver from NVIDIA is installed.
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));
      }

Result

Pedestrian Detection