Luxand FaceSDK配置详解

    Luxand FaceSDK是一个比较强大的Face API,它支持VC++、C#、object C、Java、VB、Delphi等语言,相对于其他的face api来说,Luxand FaceSDK算是支持的语言比较多的处理人脸的库。

    Luxand FaceSDK的地址:http://www.luxand.com/facesdk/

    总的来时,它有以下一些优势:

 1 Face identification and tracking in live video streams.

   实时的检测视频中的人脸,检测人脸现在技术已经比较成熟了,也很很容易实现,opencv中已有自带的检测人脸的分类器。但是显然opencv中自带的人脸检测器如果不用多线程处理的话,在视频中实时检测人脸速度是很慢的。
   FaceSDK中的检测人脸速度显然比opencv中自带的快得多,这在实时处理视频时比较有优势。

 2 Stable face recognition independent of lighting conditions.
   它对光照的变化有比较强的鲁棒性

 3 Fast and precise face detection in stills and videos.
    更准确的检测出人脸,这与它使用的检测人脸的技术有关,具体可以看它的官方简介。

 4 Fast and robust eye detection in stills and videos.
    这个我是我主要要用的功能,运行了下Demo,感觉它检测的准确性比opencv自带的检测人眼效果要好得多,速度也更快。但当人的眼睛闭合的时候依然检测不到。
    
 5 Detection of 66 facial features, smooth facial feature tracking in video.

   能提取出人脸的66个特征点,提取人脸的特征点是比较热门的研究,尤其是其准确性。因为提取特征点后要用于其他的后续研究,比如人脸建模AAM.FaceSDK检测出的特征点我准备性我感觉一般,不是特高。不够一般的需求应该还是能满足的。

 6 Automated gender recognition in stills and videos.
    识别人的性别,从人脸识别性别也是比较热门的研究,对它的准备我没有测试。
  
   除此,它还支持从摄像头中实时检测跟踪人眼、特征点以及人脸识别等功能。
  总的来说,它的检测成功率和速度都要比opencv自带的好(要不然别人就不会开发这个包了)。

   下面是Luxand FaceSDK的配置过程,这里只是在Visual studio开发环境的中的配置。比较简单,几步就可以搞定。

  Step 1: 下载Luxand FaceSDK,并安装激活。安装完成后在开始菜单你找到Luxand,里面有个License Key Wizard,运行它按要求填上你的Email地址,key就到你邮箱了。然后你就可以用了。

  Step 2:  安装FaceSDK后,在VS中新建一个项目,建好项目后把SDK包中的include\C\LuxandFaceSDK.h这个文件拷贝到当前工程目录下。

  Step 3: 把SDK包中的bin\win32\facesdk.dll 和 bin\win32\facesdk.lib 两个文件拷到工程的输出目录下。输出目录就是项目的Debug这个目录,注意在VS中建好项目编译后会生成两个Debug目录,这里的输出目录是指最外层的那个Debug目录。

  Step 4:右击选择项目属性,在 Project Properties – Linker – Input – Additional Dependencies中添加 facesdk.lib

  Step 5:  在Project Properties – Linker – General – Additional Library Directories Dependencies中添加 $(OutDir), 这里 $(OutDir)表示第四步添加的facesdk.lib所在的位置。

  Step 6: 在你的代码中添加  include "LuxandFaceSDK.h",至此,整个配置已经over了。可以开始享受Luxand FaceSDK便捷的代码了。

下面是整个我测试的代码。

#include "LuxandFaceSDK.h"
#include <stdio.h>

int main( )
{

	if (FSDKE_OK != FSDK_ActivateLibrary("你获得的Key")) {
		exit(-1);
	}
	HImage img1;   //注意这里的声明是HImage
	TFacePosition FacePosition;
	FSDK_Initialize("");
	FSDK_LoadImageFromFile(&img1, "01.png"); // load .bmp file
	FSDK_DetectFace(img1, &FacePosition);
	printf("face position: %d %d %d", FacePosition.xc, FacePosition.yc, FacePosition.angle);
	return 0;
}

  关注这个代码有两点需要说明:
     第一:在正式使用那些代码前一定要先激活(通过上面的FSDK_ActivateLibrary函数)。如果不激活,编译是能没有问题的,但运行时结果是错的。比如如上面这段代码是获得人脸区域的位置信息,如果不激活,最后获得的那些值就是错的。

    第二:声明img1时要用HImage,官方SDK文档中给的例子声明时用的是int,但是如果用int定义img1则不能通过编译,这里看官方的sdk文档时要注意。PS:其实HImage是用typedef给int加的一个马甲,按理说int跟HImage是等价的,但实际编译时只能用HImage才行。

      本文系原创,转载请注明转自:http://blog.csdn.net/computerme/article/details/38302701

你可能感兴趣的:(FaceSDK,FaceSDK,人眼定位,Luxand,人脸检测API,检测人眼)