level 5
whbledream
楼主
最近学习了Emgu cv 的图像处理算法,使用opencv公司提供的开源代码做了一个远程
图片流的人脸识别检测的上位机,首先来看看效果图
首先启动程序后

然后点击取得连接,蓝色区域将会显示远程摄像头采集的视频图像,
此时将捕捉人脸,并识别,如图

侧脸时,由于我使用的是之前训练的识别库,这个角度没法识别出我的脸,
调整角度后结果就如下图,识别出我的脸,并显示出在识别库对应的我的名字。

当点击训练识别时将调用笔记本的摄像头进行训练,界面如下(此段是参考别人的训练方法)

在训练框中的名字栏填写要的存储对应头像的人名。
训练完成后,关闭窗口,自动回调出远程视频连接。
再来测试一下识别能力

同为侧面角度,就能识别出人脸并检测了。
public partial class VideoForm : Form
{
private Image<Bgr, byte> currentImage;//设置当前画面
Image<Gray, byte> result = null;//返回帧
Image<Gray, byte> gray_frame = null;//灰度帧
public HaarCascade Face = new HaarCascade(Application.StartupPath + "/Cascades/haarcascade_frontalface_alt2.xml");//载入训练库数据
MCvFont font = new MCvFont(FONT.CV_FONT_HERSHEY_COMPLEX, 0.5, 0.5);//设置摄像头字体
//Classifier with default training location
Classifier_Train Eigen_Recog = new Classifier_Train();//实例化一个分类训练器
public VideoForm()
{
InitializeComponent();
}
private void showVideo(object sender, EventArgs e)
{ MyCaputre myCap = new MyCaputre();
string sourceURL = this.textBox1.Text;
Bitmap bmp = myCap.myCaputre(sourceURL);
currentImage = new Image<Bgr, byte>(bmp);
markFace(currentImage);
pictureBox1.Image = new System.Drawing.Bitmap(currentImage.ToBitmap(), 850, 660);
}
private Image<Bgr, byte> markFace(Image<Bgr, byte> pic)
{
currentImage =currentImage.Resize(320, 240, Emgu.CV.CvEnum.INTER.CV_INTER_CUBIC);
if (currentImage != null)
{
gray_frame = currentImage.Convert<Gray, Byte>();
MCvAvgComp[][] facesDetected = gray_frame.DetectHaarCascade(Face, 1.2, 10, Emgu.CV.CvEnum.HAAR_DETECTION_TYPE.DO_CANNY_PRUNING, new Size(50, 50));
2013年04月01日 23点04分
1
图片流的人脸识别检测的上位机,首先来看看效果图
首先启动程序后

然后点击取得连接,蓝色区域将会显示远程摄像头采集的视频图像,此时将捕捉人脸,并识别,如图

侧脸时,由于我使用的是之前训练的识别库,这个角度没法识别出我的脸,调整角度后结果就如下图,识别出我的脸,并显示出在识别库对应的我的名字。

当点击训练识别时将调用笔记本的摄像头进行训练,界面如下(此段是参考别人的训练方法)
在训练框中的名字栏填写要的存储对应头像的人名。训练完成后,关闭窗口,自动回调出远程视频连接。
再来测试一下识别能力

同为侧面角度,就能识别出人脸并检测了。public partial class VideoForm : Form
{
private Image<Bgr, byte> currentImage;//设置当前画面
Image<Gray, byte> result = null;//返回帧
Image<Gray, byte> gray_frame = null;//灰度帧
public HaarCascade Face = new HaarCascade(Application.StartupPath + "/Cascades/haarcascade_frontalface_alt2.xml");//载入训练库数据
MCvFont font = new MCvFont(FONT.CV_FONT_HERSHEY_COMPLEX, 0.5, 0.5);//设置摄像头字体
//Classifier with default training location
Classifier_Train Eigen_Recog = new Classifier_Train();//实例化一个分类训练器
public VideoForm()
{
InitializeComponent();
}
private void showVideo(object sender, EventArgs e)
{ MyCaputre myCap = new MyCaputre();
string sourceURL = this.textBox1.Text;
Bitmap bmp = myCap.myCaputre(sourceURL);
currentImage = new Image<Bgr, byte>(bmp);
markFace(currentImage);
pictureBox1.Image = new System.Drawing.Bitmap(currentImage.ToBitmap(), 850, 660);
}
private Image<Bgr, byte> markFace(Image<Bgr, byte> pic)
{
currentImage =currentImage.Resize(320, 240, Emgu.CV.CvEnum.INTER.CV_INTER_CUBIC);
if (currentImage != null)
{
gray_frame = currentImage.Convert<Gray, Byte>();
MCvAvgComp[][] facesDetected = gray_frame.DetectHaarCascade(Face, 1.2, 10, Emgu.CV.CvEnum.HAAR_DETECTION_TYPE.DO_CANNY_PRUNING, new Size(50, 50));