Talk:CSharp OpenCV: Difference between revisions
From Ilianko
Created page with "<code><pre></pre></code>" |
No edit summary |
||
| (One intermediate revision by the same user not shown) | |||
| Line 1: | Line 1: | ||
<code><pre></pre></code> | Image<Gray, Byte> cannyEdges = frame.Convert<Gray, Byte>().Canny(100, 60);//cannyThreshold, cannyThresholdLinking); | ||
<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> | |||
Latest revision as of 13:32, 3 February 2016
Image<Gray, Byte> cannyEdges = frame.Convert<Gray, Byte>().Canny(100, 60);//cannyThreshold, cannyThresholdLinking);
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)
{
}
}
}