1、界面
1.1人脸识别界面
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/12cd30bfc994891562623bc403278b51.png#pic_center)
1.2制作模板界面
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/d30a79bccd6a67cccb000212bed5e409.png#pic_center)
2、代码
2.1人脸识别界面关键代码
2.1.1 开启摄像头
private void buttonOpenFram_Click(object sender, EventArgs e)
{
if (buttonOpenFram.Text == "关闭摄像头")
{
buttonOpenFram.Text = "开启摄像头";
HOperatorSet.CloseFramegrabber(hv_AcqHandle);
}
else
{
hv_AcqHandle.Dispose();
HOperatorSet.OpenFramegrabber("DirectShow", 1, 1, 0, 0, 0, 0, "default", 8, "rgb",
-1, "false", "default", "[0] ", 0, -1, out hv_AcqHandle);
HOperatorSet.GrabImageStart(hv_AcqHandle, -1);
buttonOpenFram.Text = "关闭摄像头";
}
}
2.1.2 实时
private void buttonCurImage_Click(object sender, EventArgs e)
{
if (buttonOpenFram.Text != "关闭摄像头")
{
MessageBox.Show("请开启摄像头!");
return;
}
showWin();
}
private void showWin()
{
HOperatorSet.GenEmptyObj(out ho_Image);
HOperatorSet.GenEmptyObj(out ho_Rectangle);
HOperatorSet.GenEmptyObj(out ho_ImageReduced);
HOperatorSet.GenEmptyObj(out ho_ModelImages);
HOperatorSet.GenEmptyObj(out ho_ModelRegions);
HOperatorSet.GenEmptyObj(out ho_ModelContours);
HOperatorSet.GenEmptyObj(out ho_ContoursAffineTrans);
HOperatorSet.GenEmptyObj(out ho_Region);
HOperatorSet.GenEmptyObj(out ho_RegionUnion);
HOperatorSet.GenEmptyObj(out ho_Rectangle1);
ho_Image.Dispose();
HOperatorSet.GrabImageAsync(out ho_Image, hv_AcqHandle, -1);
hv_Width.Dispose(); hv_Height.Dispose();
HOperatorSet.GetImageSize(ho_Image, out hv_Width, out hv_Height);
hWindowControl1.HalconWindow.SetPart((HTuple)0, (HTuple)0, hv_Height - 1, hv_Width - 1);
hv_ModelID1.Dispose();
HOperatorSet.ReadShapeModel("myself_shape_model.shm", out hv_ModelID1);
while (true)
{
if (buttonOpenFram.Text != "关闭摄像头")
{
HOperatorSet.DumpWindow(hWindowControl1.HalconWindow, "png", "人脸识别结果");
break;
}
HOperatorSet.GrabImageAsync(out ho_Image, hv_AcqHandle, -1);
using (HDevDisposeHelper dh = new HDevDisposeHelper())
{
hv_Row.Dispose(); hv_Column.Dispose(); hv_Angle.Dispose(); hv_Scale.Dispose(); hv_Score.Dispose();
HOperatorSet.FindScaledShapeModel(ho_Image, hv_ModelID1, (new HTuple(-90)).TupleRad()