Pedestrian Detection in CSharp: Difference between revisions

From EMGU
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
Pedestrian Detection