标题 | PictureBox(C#)+百度离线SDK实现人脸识别 |
范文 | 安国有 王淑妍 【摘 ?要】基于VS2012编程工具,论文通过C#语言调用Picture控件和百度人脸离线识别SDK,实现基本的人脸识别与跟踪。 【Abstract】Based on VS2012 programming tools, the paper calls Picture controls and Baidu offline face recognition SDK through C# language to realize basic face recognition and tracking. 【关键词】C#;Picture控件;百度人脸识别离线SDK;人脸识别与跟踪 【Keywords】C#; Picture controls; Baidu offline face recognition SDK; face recognition and tracking 【中图分类号】TP391.4 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?【文献标志码】A ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 【文章编号】1673-1069(2020)07-0170-02 1 引言 随着各大公司(百度、腾讯等)AI开放平台的推出,及其各自功能的日臻完善,对于一般的程序编写者,结合工作需求,利用开放平台的SDK和API功能,量身开发应用程序已成为可能。作为初学者,利用已知的开发工具和语言调用开放的SDK或API的能力不足,为此将自己开发的心得加以总结,以供同行借鉴与交流,进而推进AI技术在各行业的应用与普及。 2 百度人脸识别离线SDK下载与激活 2.1 “人脸识别SDK”下载 通过百度AI开发平台下载所需SDK,例如,通过VS2012编程工具,利用C#语言,开发B/S运行模式的人脸识别应用软件,則需下载“Win C# 离线识别SDK”。 2.2 SDK申请与激活 无论试用,还是永久使用百度人脸识别离线SDK,都需要通过百度AI开放平台注册合法用户账号,然后通过账号登录平台,按照如下操作步骤逐一完成方可。 2.2.1 SDK申请 根据下载的SDK以及开发意向,填写相关申请信息,并提交信息,等待百度AI开发平台的后台审核。如果审核通过,再次登录平台时,即可看到两条审核通过信息,每条信息中含有序号,因此一定保存好“序号”,以便后续离线激活SDK使用。 2.2.2 离线激活SDK 解压已下载的“Baidu_Face_Offline_SDK_Windows_Csharp.zip”文件,找到bin文件,其下有两个文件夹:“X64”和“X86”,如开发程序64位应用程序,则运行“X64”文件夹下的“LicenseTool.exe”程序,反之则运行“X86”的“LicenseTool.exe”,然后填写对应的“序号”即可激活SDK,激活成功后,在“X64”或“X86”文件夹下会生成两个文件:icense.ini和license.key,这两个文件切记不能删除。 3 开发环境部署 如果基于VS2012编辑器,利用C#语言调用百度“人脸离线识别SDK”,开发C/S模式Windows应用程序,因此其开发环境要求如下: ①Windows7以上操作系统,安装VS2012工具软件; ②由于百度人脸识别离线SDK的运行需要.NET Framework 4.5.2,因此安装完VS2012工具软件,应该下载.NET Framework 4.5.2,并进行安装。 4 项目首显窗体设置 通过解压后的“testface.sln”文件打开项目,由于此应用程序希望通过自建窗体的pictureBox控件显示人脸识别与跟踪情况,因此需要按下述步骤操作: ①通过项目属性,设置“应用程序”选项中的“输出类型”为:Windows应用程序。 ②在项目中创建form1窗体,在窗体中添加pictureBox1、button1、button2控件。 ③修改Face.cs类文件,实现项目启动首先显示form1窗体。 在此文件命名空间引用处,添加using System.Windows.Forms; 删除Main方法原有语句,然后输入如下语句: Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new form1()); 这时运行程序,即可看到首先显示的界面即为form1窗体。 5 定义、修改相关方法,实现人脸识别与跟踪 第一,在Face.cs类文件中定义如下方法,实现百度人脸识别离线SDK初始化: public void InitSDK() { bool id=false;//表示以生活照识别 int n = sdk_init(false); } 第二,在FaceTrack.cs文件中,定义数据转换函数,修改相关方法,实现pictureBox控件显示人脸识别与跟踪。 为了确保函数的定义和方法的修改,在命名空间引用处,添加下面语句: Using System.IO; Using System.Drawing; ①定义数据转换函数 private Bitmap BToBp(byte[] Bytes) { MemoryStream stream = null; try { stream = new MemoryStream(Bytes); return new Bitmap((Image) new Bitmap(stream)); } catch (ArgumentNullException ex){throw ex;} catch (ArgumentException ex){throw ex;} finally{stream.Close();} } ②修改usb_csharp_track_face方法,实现pictureBox控件显示人脸识别与跟踪 首先给方法定义两个形参,如下: public void usb_csharp_track_face(int dev, System.Windows.Forms pictureBox p1); 其次分别删除using (var window=new Window(“face”))和window.ShowImage(image)语句; 最后在Marshal.FreeHGlobal(ptT)下面增加两条独立语句: Bitmap b=BToBp(image.ToBytes());p1.Image=b; 第三,通过窗体按钮调用相关方法,实现SDK初始化和人脸识别与跟踪。 ①在form1中创建对象实例,定义无形参的人脸识别与跟踪方法,具体如下: 首先,创建对象实例:Face Fa=new Face();FaceTrack Ft=new FaceTrack(); 其次,定義无形参方法,以供线程调用: Private void run() { Ft.usb_csharp_track_face(0,pictureBox1); } ②通过button1按钮单击事件,调用相关方法,实现SDK初始化。 private void button1_Click(object sender,EventArgs e) { Fa.InitSDK(); } ③通过buttion2按钮的单击事件,创建新线程,调用run方法,实现人脸识别与跟踪。 private void button2_Click(object sender,EventArgs e) { Thread MyThread=new Thread(run); MyThread.Start(); } 第四,运行方法。首先单击button1,进行SDK初始化,使之常驻内容,支撑其他方法的调用,待初始化完成,然后单击button2,执行人脸识别和跟踪,并通过form1 窗体上的pictureBox1控件识别与跟踪效果。 综上所述,即为通过C#语言调用百度人脸识别离线SDK,通过自建窗体上的pictureBox1呈现识别与跟踪效果,可以说这只是一个人脸识别与跟踪的基本功能,但是由于通过自建窗体的控件实现了识别与跟踪,这样就为广大编程爱好者结合自身需求,在窗体上调用其他控件提供了方法。 |
随便看 |
|
科学优质学术资源、百科知识分享平台,免费提供知识科普、生活经验分享、中外学术论文、各类范文、学术文献、教学资料、学术期刊、会议、报纸、杂志、工具书等各类资源检索、在线阅读和软件app下载服务。