人脸认证源码faceIdentify详解
本文实例为大家分享了人脸认证源码faceIdentify的具体代码,供大家参考,具体内容如下
人脸认证:
usingAForge.Video.DirectShow; usingface; usingNewtonsoft.Json; usingNewtonsoft.Json.Linq; usingSystem; usingSystem.Collections.Generic; usingSystem.ComponentModel; usingSystem.Data; usingSystem.Data.SqlClient; usingSystem.Drawing; usingSystem.Drawing.Imaging; usingSystem.IO; usingSystem.Linq; usingSystem.Text; usingSystem.Threading.Tasks; usingSystem.Windows.Forms; namespaceCamtest { publicpartialclassfaceIdentify:Form { publicfaceIdentify() { InitializeComponent(); //启动默认在屏幕中间 this.StartPosition=System.Windows.Forms.FormStartPosition.CenterScreen; } //Api_Key publicstaticstringApi_Key="OVYw5Ok0y9U8n6CfVPYt0wfZ"; //Secret_Key publicstaticstringSecret_Key="aCN3lupCarq3rC9G8Rylqz1d36Towp8G"; FilterInfoCollectionvideoDevices; VideoCaptureDevicevideoSource; publicintselectedDeviceIndex=0; publicintselectedPICIndex=0; //窗体加载 privatevoidfaceIdentify_Load(objectsender,EventArgse) { //显示为正在检测 this.label1.Text=this.label2.Text=this.label6.Text=this.label9.Text="正在识别"; //刷新可用相机的列表 videoDevices=newFilterInfoCollection(FilterCategory.VideoInputDevice); comboBoxCameras.Items.Clear(); for(inti=0;i0) comboBoxCameras.SelectedIndex=0; picsize.SelectedIndex=0; //打开摄像头 openCamera(); } //打开摄像头 publicvoidopenCamera() { selectedPICIndex=picsize.SelectedIndex; selectedDeviceIndex=comboBoxCameras.SelectedIndex; //连接摄像头。 videoSource=newVideoCaptureDevice(videoDevices[selectedDeviceIndex].MonikerString); videoSource.VideoResolution=videoSource.VideoCapabilities[selectedDeviceIndex]; //枚举所有摄像头支持的像素,设置拍照为1920*1080 foreach(VideoCapabilitiescapabinvideoSource.VideoCapabilities) { if(selectedPICIndex==0) { if(capab.FrameSize.Width==1920&&capab.FrameSize.Height==1080) { videoSource.VideoResolution=capab; break; } if(capab.FrameSize.Width==1280&&capab.FrameSize.Height==720) { videoSource.VideoResolution=capab; break; } } else { if(capab.FrameSize.Width==1280&&capab.FrameSize.Height==720) { videoSource.VideoResolution=capab; break; } } } videoSourcePlayer1.VideoSource=videoSource; //setNewFrameeventhandler videoSourcePlayer1.Start(); } /// ///签到的按钮 ///先保存图片,然后进行比较,获取的id,查询 /// ////// privatevoidqiandao_Click(objectsender,EventArgse) { Usersusers=FaceIdentifys(SavePicture()); this.label1.Text=users.age.ToString(); this.label2.Text=users.name; this.label6.Text=users.phone; this.label9.Text=users.address; if(users.picture!=null) { this.pictureBox1.Image=Image.FromFile(users.picture,false); } } //关闭窗口 privatevoidfaceIdentify_FormClosing(objectsender,FormClosingEventArgse) { DialogResultr=MessageBox.Show("确定要退出程序?","操作提示",MessageBoxButtons.OKCancel,MessageBoxIcon.Question); if(r!=DialogResult.OK) { e.Cancel=true; } videoSourcePlayer1.Stop();//停止摄像头 videoSourcePlayer1.Dispose(); } /// ///人脸识别 /// ///publicstaticUsersFaceIdentifys(stringfilename) { longid=0; stringids=""; doublescores_num=0; Usersuser=newUsers(); varclient=newBaidu.Aip.Face.Face(Api_Key,Secret_Key); varimage1=File.ReadAllBytes(filename); varresult=client.User.Identify(image1,new[]{"gr_test"},1,1); //先判断脸是不是在上面,在继续看有匹配的没,否则提示放上脸 //得到根节点 JObjectjo_result=(JObject)JsonConvert.DeserializeObject(result.ToString()); if((string)jo_result["error_msg"]!=null) { MessageBox.Show("对不起,请把脸放上!","提示",MessageBoxButtons.OK,MessageBoxIcon.Stop); } else { //检测到脸 //得到result节点 JArrayjo_age=(JArray)JsonConvert.DeserializeObject(jo_result["result"].ToString()); foreach(varvalinjo_age) { id=long.Parse(((JObject)val)["uid"].ToString());//获取uid stringscores=((JObject)val)["scores"].ToString();//获取scores intnum1=scores.IndexOf("\n")+2; intnum2=scores.LastIndexOf("]")-8; ids=scores.Substring(num1,num2); scores_num=double.Parse(ids); } if(scores_num>80) { user=QueryUsersById(id); if(user.id!=0) { MessageBox.Show("签到成功,已检测到您的信息","操作提示",MessageBoxButtons.OK,MessageBoxIcon.Information); } else { MessageBox.Show("对不起,系统根据您的脸未检测到信息","操作提示",MessageBoxButtons.OK,MessageBoxIcon.Stop); } } else{ MessageBox.Show("对不起,系统根据您的脸未检测到信息","操作提示",MessageBoxButtons.OK,MessageBoxIcon.Stop); } } returnuser; } /// ///保存图片 /// publicstringSavePicture() { if(videoSource==null) { returnnull; } Bitmapbitmap=videoSourcePlayer1.GetCurrentVideoFrame(); //图片名称,年月日时分秒毫秒.jpg stringfileName=DateTime.Now.ToString("yyyyMMddHHmmssff")+".jpg"; //获取项目的根目录 stringpath=AppDomain.CurrentDomain.BaseDirectory; stringpicture=path+"\\picture\\"+fileName; //将图片保存在服务器里面 bitmap.Save(picture,ImageFormat.Jpeg); bitmap.Dispose(); returnpicture; } //////根据编号查询用户信息 /// ////// publicstaticUsersQueryUsersById(longid) { Usersuser=newUsers(); stringsql="select*fromuserswhereid=@id"; using(SqlDataReaderreader=SqlHelper.ExcuteReader(sql,CommandType.Text,newSqlParameter("@id",id))) { if(reader.Read()) { user.id=long.Parse(reader[0].ToString()); user.name=reader[1].ToString(); user.age=Convert.ToInt32(reader[2]); user.phone=reader[3].ToString(); user.password=reader[4].ToString(); user.address=reader[5].ToString(); user.picture=reader[6].ToString(); } } returnuser; } //取消的按钮 privatevoidclose_Click(objectsender,EventArgse) { //停止摄像头 videoSourcePlayer1.Stop(); this.Close(); welcomewe=newwelcome(); we.Show(); } } }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。