Difference between revisions of "Talk:CSharp OpenCV"

From Ilianko
(Created page with "<code><pre></pre></code>")
 
Line 1: Line 1:
<code><pre></pre></code>
+
<code><pre>
 +
 
 +
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.Util;
 +
using Emgu.CV.Structure;
 +
using System.Windows.Threading;
 +
 
 +
namespace emgu
 +
{
 +
    public partial class Form1 : Form
 +
    {
 +
        private Capture cap = new Capture();
 +
        Image<Bgr, byte> frame;
 +
        private DispatcherTimer timer = new DispatcherTimer();
 +
   
 +
        public Form1()
 +
        {
 +
            InitializeComponent();
 +
        }
 +
 
 +
        private void Form1_Load(object sender, EventArgs e)
 +
        {
 +
            this.Size = new System.Drawing.Size(100, 100);
 +
            frame = cap.QueryFrame();
 +
            this.Size = frame.Size;
 +
 
 +
            timer.Tick += new EventHandler(timer_tick);
 +
            timer.Interval = new TimeSpan(0, 0, 0, 0, 35);
 +
            timer.Start();
 +
        }
 +
 
 +
        private Rectangle[] faces;
 +
        private Rectangle[] eyes;
 +
        private Rectangle eyeL;
 +
        private Image<Gray, byte> gray;
 +
       
 +
        private CascadeClassifier faceDetect = new CascadeClassifier("haar.xml");
 +
        private CascadeClassifier eyeDetect = new CascadeClassifier("haarcascade_eye.xml");
 +
       
 +
        private Size min = new Size(20, 20);
 +
        private Size max = new Size(300, 300);
 +
 
 +
        void timer_tick(object sender, EventArgs e)
 +
        {
 +
            frame = cap.QueryFrame();
 +
            gray = frame.Convert<Gray, byte>();
 +
 
 +
 
 +
            faces = faceDetect.DetectMultiScale(gray, 1.2, 2, min, max);
 +
 
 +
 
 +
 
 +
            List< Bgr> colors = new List<Bgr>();
 +
 
 +
            colors.Add( new Bgr(255, 0, 0));colors.Add( new Bgr(255, 255, 0));colors.Add( new Bgr(255, 0, 255));
 +
            var i = 0;
 +
            foreach (var face in faces)
 +
            {
 +
                gray.ROI = face;
 +
                frame.Draw(face, colors[i], 3); i++;
 +
                if (i > 2) i = 0;
 +
 
 +
                eyes = eyeDetect.DetectMultiScale(gray, 1.2, 2, min, max);
 +
                foreach (var eye in eyes)
 +
                {
 +
                    eyeL = eye;
 +
                    eyeL.X += face.X;
 +
                    eyeL.Y += face.Y;
 +
                    frame.Draw(eyeL, new Bgr(0, 0, 0), 3); i++;
 +
             
 +
                }
 +
 
 +
            }
 +
 
 +
            pictureBox1.Image = frame.Bitmap;
 +
        }
 +
 
 +
 
 +
        private void pictureBox1_Click(object sender, EventArgs e)
 +
        {
 +
 
 +
        }
 +
 
 +
    }
 +
}
 +
 
 +
</pre></code>

Revision as of 13:26, 3 February 2016


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.Util;
using Emgu.CV.Structure;
using System.Windows.Threading;

namespace emgu
{
    public partial class Form1 : Form
    {
        private Capture cap = new Capture();
        Image<Bgr, byte> frame;
        private DispatcherTimer timer = new DispatcherTimer();
    
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            this.Size = new System.Drawing.Size(100, 100);
            frame = cap.QueryFrame();
            this.Size = frame.Size;

            timer.Tick += new EventHandler(timer_tick);
            timer.Interval = new TimeSpan(0, 0, 0, 0, 35);
            timer.Start();
        }

        private Rectangle[] faces;
        private Rectangle[] eyes;
        private Rectangle eyeL;
        private Image<Gray, byte> gray;
        
        private CascadeClassifier faceDetect = new CascadeClassifier("haar.xml");
        private CascadeClassifier eyeDetect = new CascadeClassifier("haarcascade_eye.xml");
        
        private Size min = new Size(20, 20);
        private Size max = new Size(300, 300);

        void timer_tick(object sender, EventArgs e)
        {
            frame = cap.QueryFrame();
            gray = frame.Convert<Gray, byte>();


            faces = faceDetect.DetectMultiScale(gray, 1.2, 2, min, max);



            List< Bgr> colors = new List<Bgr>();

            colors.Add( new Bgr(255, 0, 0));colors.Add( new Bgr(255, 255, 0));colors.Add( new Bgr(255, 0, 255));
            var i = 0;
            foreach (var face in faces)
            {
                gray.ROI = face;
                frame.Draw(face, colors[i], 3); i++;
                if (i > 2) i = 0;

                eyes = eyeDetect.DetectMultiScale(gray, 1.2, 2, min, max);
                foreach (var eye in eyes)
                {
                    eyeL = eye;
                    eyeL.X += face.X;
                    eyeL.Y += face.Y;
                    frame.Draw(eyeL, new Bgr(0, 0, 0), 3); i++;
               
                }

            }

            pictureBox1.Image = frame.Bitmap;
        }


        private void pictureBox1_Click(object sender, EventArgs e)
        {

        }

    }
}