Talk:Pedestrian Detection in CSharp

From Emgu CV: OpenCV in .NET (C#, VB, C++ and more)
Revision as of 12:19, 28 February 2013 by Ezik (talk | contribs)
Jump to navigation Jump to search

I'm learning to program pedestrian detection with a webcam, but I found the problem, when the program is run the video is slow, help me to solve this problem, thanks. source code that I use like this

using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using Emgu.CV; using Emgu.CV.Structure; using Emgu.Util; using Emgu.CV.UI; using Emgu.CV.GPU; namespace PedestrianDetection { public partial class CameraCapture : Form { //declaring global variables private Capture capture; //takes images from camera as image frames Boolean camFlip = true; public CameraCapture() { InitializeComponent(); } private void ProcessFrame(object sender, EventArgs arg) { Image<Bgr, Byte> ImageFrame = capture.QueryFrame(); if (ImageFrame != null) // confirm that image is valid { Image<Gray, byte> grayframe = ImageFrame.Convert<Gray, byte>(); long processingTime; Rectangle[] results = FindPedestrian.Find(ImageFrame, out processingTime); foreach (Rectangle rect in results) ImageFrame.Draw(rect, new Bgr(Color.Red), 10); } CamImageBox.Image = ImageFrame; } private void btnStart_Click(object sender, EventArgs e) { if (capture != null) { if (btnStart.Text == "Pause") { //if camera is getting frames then pause the capture and set button Text to // "Resume" for resuming capture btnStart.Text = "Resume"; // Application.Idle -= ProcessFrame; } else { //if camera is NOT getting frames then start the capture and set button // Text to "Pause" for pausing capture btnStart.Text = "Pause"; Application.Idle += ProcessFrame; } } } private void ReleaseData() { if (capture != null) capture.Dispose(); } private void cbCamIndex_SelectedIndexChanged(object sender, EventArgs e) { //Set the camera number to the one selected via combo box int CamNumber = -1; CamNumber = int.Parse(cbCamIndex.Text); //Start the selected camera #region if capture is not created, create it now if (capture == null) { try { capture = new Emgu.CV.Capture(CamNumber); } catch (NullReferenceException excpt) { MessageBox.Show(excpt.Message); } } #endregion //Start showing the stream from camera btnStart_Click(sender, e); btnStart.Enabled = true; if (camFlip == true) { capture.FlipHorizontal = !capture.FlipHorizontal; camFlip = false; } } } }