dlib人脸关键点提取库在matlab 2018b平台的使用(VS2015和Matlab 2018b跨平台编程)

dlib人脸关键点提取库,拥有准确的提取精度,但是dlib人脸关键点提取库对于C++以及OpenCV具有很好的支持,对于matlab的支持较少,为了可以在matlab平台上使用dlib进行人脸关键点的提取,需要将dlib人脸关键点提取的代码编译成可供matlab 2018b平台使用的.mexw64文件,本文基于VS2015和Matlab 2018b在Windows 10平台下进行,本文所用的dlib为19.16

首先定位到dlib所在的matlab文件夹,在我电脑上为E:\package\dlib-19.16\dlib\matlab,在该文件夹下,新建一个build文件夹,存放编译后文件,之后在E:\package\dlib-19.16\dlib\matlab路径下,新建dlib人脸关键点检测的程序,命名为facelandmarks.cpp,同时,对该文件夹下的cmake_mex_wrapper文件以及CMakeLists.txt文件进行修改,对cmake_mex_wrapper文件修改的目的是:增加Matlab的运行bin,以我的为例的结果如下所示;

对CMkaeLists.txt进行修改,修改目的是:增加对 facelandmarks.cpp文件的编译,使之可以编译成为一个.sln文件,修改结果如下所示:

接下来,打开cmake-gui 3.11.4版本,如下所示:

首先选择source code,即要编译的源码的位置,之后,设置编译后文件的位置,点击Configure,配置为VS2015的编译环境,当程序编译完成后,点击Generate,生成.vcxproj文件,生成结果如下所示:

打开ALL_BUILD.vcxproj文件,结果如下所示:

此时,如果在ALL_BUILD上右键,重新生成项目,一定会出现各种各样的问题,所以这个时候需要按照如下的方式进行,当按照如下的方式完成后,可以得到最后想要的文件,出现问题的原因是少了所需要库的支持,出现问题的工程有如下的四个:example_mex_callback、example_mex_function、example_mex_struct以及face_landmarks,对于这四个工程出现的问题都一样,因此接下来,仅以face_landmarks为例,进行工程的配置, 剩下的三个配置方式相同。

右键点击face_landmarks工程,点击属性,在debug x64下进行,找到C/C++下的附加包含目录,包含如下文件:

接着点击链接器->常规->附加库目录,在附加库目录添加matlab的lib,以我的为例,结果如下:

 

接着,链接器->输入->附加依赖项,添加库文件,结果如下所示:

 

主要是添加libut.lib和libmat.lab,添加上这两个文件后,就不会出现不认识外部符号的定义,最后一步在命令行中添加命令行选项:

 

此时,一个工程完成,按照同样的方法,对剩下的三个工程进行配置。

当工程配置完成后,进行编译,编译完成后,会出现一个工程编译不成功,这个无所谓,因为我们需要的文件已经编译出来,编译后的文件如下形式:

 

 此时,已经得到我们需要的.mexw64文件。接下来,在matlab 2018b中,添加上路径,如下所示:

 点击添加并包含文件夹,将编译后的build下的所有文件进行包含。此时成功进行包含。对编译后的文件进行测试,首先利用dlib自带的example文件进行测试:

出现如下结果,证明调用成功:

 接着,对face_landmarks,人脸68点标定文件进行测试,测试结果如下:

大功告成,可以成功调用。

此时还有 一个没有说,就是如何编写程序,由于matlab和VS对于数据的格式要求不一样,我们首先要知道对应的格式,在example_mex_function.cpp文件中,有对数据格式的说明,即:

对于face_landmarks进行编辑,必须要有一个主函数,该主函数不是main,如下所示:

 第一行为传入的是彩色图像,第二行为存储的人脸,第三行为68个特征点。接下来可以进行各自需要的程序编写工作了。

 

 

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值