Csharp/C#教程:人脸认证源码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;i<videoDevices.Count;i++) { comboBoxCameras.Items.Add(videoDevices[i].Name.ToString()); } if(comboBoxCameras.Items.Count>0) 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(); } ///<summary> ///签到的按钮 ///先保存图片,然后进行比较,获取的id,查询 ///</summary> ///<paramname="sender"></param> ///<paramname="e"></param> 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(); } ///<summary> ///人脸识别 ///</summary> ///<paramname="filename"></param> 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; } ///<summary> ///保存图片 ///</summary> 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; } ///<summary> ///根据编号查询用户信息 ///</summary> ///<paramname="id"></param> ///<returns></returns> 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(); } } } 您可能感兴趣的文章:百度人脸识别之人脸识别FaceIdentify(签到考勤)

标签: fa 源码 ce ace face tif

百度人脸识别之人脸识别FaceIdentify(签到考勤)

C# http系列之以form-data方式上传多个文件及键值对集合到远程服务器

上述就是C#学习教程:人脸认证源码faceIdentify详解分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/908458.html

(0)
上一篇 2021年10月25日
下一篇 2021年10月25日

精彩推荐