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 System.Threading;
namespace testCamera
{
public partial class Form1 : Form
{
Capture capture = new Capture();
bool myflag = true;
double scale = 1.5;
bool stopAndExit = true;
public Form1()
{
InitializeComponent();
}
private void button2_Click(object sender, EventArgs e)
{
myflag=true;
stopAndExit = true;
button3.Text = "停止";
Thread t = new Thread (WriteY);
t.Start();
// Run WriteY on the new threa
}
void WriteY()
{
while (myflag)
{
Image<Bgr, Byte> frame = capture.QueryFrame();
frame=frame.Flip(Emgu.CV.CvEnum.FLIP.HORIZONTAL);
Image<Bgr, Byte> smallframe = frame.Resize(1 / scale);//缩放摄像头拍到的大尺寸照片
Image<Gray, Byte> gray = smallframe.Convert<Gray, Byte>(); //Convert it to Grayscale
gray._EqualizeHist();//均衡化
HaarCascade face = new HaarCascade("haarcascade_frontalface_alt2.xml");
MCvAvgComp[][] facesDetected = gray.DetectHaarCascade(face, 1.1, 2, Emgu.CV.CvEnum.HAAR_DETECTION_TYPE.DO_CANNY_PRUNING, new Size(30, 30));
foreach (MCvAvgComp f in facesDetected[0])
{
frame.Draw(f.rect, new Bgr(Color.Red), 3);//绘制检测框
}
imageBox1.Image=frame;
}
}
private void button3_Click(object sender, EventArgs e)
{
if (stopAndExit)
{
myflag = false;
button3.Text = "关闭界面";
stopAndExit = !stopAndExit;
}
else
{
this.Close();
}
}
}
}