|
@@ -1,9 +1,9 @@
|
|
|
-// 下列 ifdef 块是创建使从 DLL 导出更简单的
|
|
|
-// 宏的标准方法。此 DLL 中的所有文件都是用命令行上定义的 LIBFACECAPTURE_EXPORTS
|
|
|
-// 符号编译的。在使用此 DLL 的
|
|
|
-// 任何其他项目上不应定义此符号。这样,源文件中包含此文件的任何其他项目都会将
|
|
|
-// LIBFACECAPTURE_API 函数视为是从 DLL 导入的,而此 DLL 则将用此宏定义的
|
|
|
-// 符号视为是被导出的。
|
|
|
+// 涓嬪垪 ifdef 鍧楁槸鍒涘缓浣夸粠 DLL 瀵煎嚭鏇寸畝鍗曠殑
|
|
|
+// 瀹忕殑鏍囧噯鏂规硶銆傛� DLL 涓�殑鎵€鏈夋枃浠堕兘鏄�敤鍛戒护琛屼笂瀹氫箟鐨� LIBFACECAPTURE_EXPORTS
|
|
|
+// 绗﹀彿缂栬瘧鐨勩€傚湪浣跨敤姝� DLL 鐨�
|
|
|
+// 浠讳綍鍏朵粬椤圭洰涓婁笉搴斿畾涔夋�绗﹀彿銆傝繖鏍凤紝婧愭枃浠朵腑鍖呭惈姝ゆ枃浠剁殑浠讳綍鍏朵粬椤圭洰閮戒細灏�
|
|
|
+// LIBFACECAPTURE_API 鍑芥暟瑙嗕负鏄�粠 DLL 瀵煎叆鐨勶紝鑰屾� DLL 鍒欏皢鐢ㄦ�瀹忓畾涔夌殑
|
|
|
+// 绗﹀彿瑙嗕负鏄��瀵煎嚭鐨勩€�
|
|
|
#ifndef LIBFACECAPTURE
|
|
|
#define LIBFACECAPTURE
|
|
|
|
|
@@ -13,153 +13,153 @@
|
|
|
#define LIBFACECAPTURE_API __declspec(dllimport)
|
|
|
#endif
|
|
|
|
|
|
-//配置参数
|
|
|
+//閰嶇疆鍙傛暟
|
|
|
struct CFaceCaptureConfig
|
|
|
{
|
|
|
- int nPrimCamera; //双摄像头模式下,0:以环境相机为首选相机(单相机默认为0),1:以操作相机为首选相机
|
|
|
- int nServersType; //0:前端,1:后台
|
|
|
- int nContourMinAera; //运动跟踪最小面积
|
|
|
+ int nPrimCamera; //鍙屾憚鍍忓ご妯″紡涓嬶紝0:浠ョ幆澧冪浉鏈轰负棣栭€夌浉鏈猴紙鍗曠浉鏈洪粯璁や负0锛夛紝1锛氫互鎿嶄綔鐩告満涓洪�閫夌浉鏈�
|
|
|
+ int nServersType; //0:鍓嶇�锛�1锛氬悗鍙�
|
|
|
+ int nContourMinAera; //杩愬姩璺熻釜鏈€灏忛潰绉�
|
|
|
int nUpCameraEdgeLimit; //
|
|
|
int nDownCameraEdgeLimit; //
|
|
|
- char strFaceDataDirPath[MAX_PATH]; // 配置文件路径
|
|
|
- float fOperateFaceSize; //可操作距离时人脸系数,0.5M
|
|
|
- float fCloseFaceSize; //靠近距离时人脸系数,1.5M
|
|
|
- float fFarFaceSize; //远距离时人脸系数,2.5M
|
|
|
- float fSearchFaceSize; //远距离时搜索人脸的系数
|
|
|
- float fDetectFaceSize; //人脸检测时搜索人脸的系数
|
|
|
- int nFaceSizeOffset; //不同人脸的偏移标准
|
|
|
- int nSleepLong; //检测时间间隔长
|
|
|
- int nSleepMiddle; //检测时间间隔中
|
|
|
- int nSleepShort; //检测时间间隔短
|
|
|
- int nThresholdNum; //二值化参数
|
|
|
+ char strFaceDataDirPath[MAX_PATH]; // 閰嶇疆鏂囦欢璺�緞
|
|
|
+ float fOperateFaceSize; //鍙�搷浣滆窛绂绘椂浜鸿劯绯绘暟,0.5M
|
|
|
+ float fCloseFaceSize; //闈犺繎璺濈�鏃朵汉鑴哥郴鏁�,1.5M
|
|
|
+ float fFarFaceSize; //杩滆窛绂绘椂浜鸿劯绯绘暟,2.5M
|
|
|
+ float fSearchFaceSize; //杩滆窛绂绘椂鎼滅储浜鸿劯鐨勭郴鏁�
|
|
|
+ float fDetectFaceSize; //浜鸿劯妫€娴嬫椂鎼滅储浜鸿劯鐨勭郴鏁�
|
|
|
+ int nFaceSizeOffset; //涓嶅悓浜鸿劯鐨勫亸绉绘爣鍑�
|
|
|
+ int nSleepLong; //妫€娴嬫椂闂撮棿闅旈暱
|
|
|
+ int nSleepMiddle; //妫€娴嬫椂闂撮棿闅斾腑
|
|
|
+ int nSleepShort; //妫€娴嬫椂闂撮棿闅旂煭
|
|
|
+ int nThresholdNum; //浜屽€煎寲鍙傛暟
|
|
|
};
|
|
|
|
|
|
struct CCustomerRange
|
|
|
{
|
|
|
- short sX; //人脸中心点X坐标
|
|
|
- short sY; //人脸中心点Y坐标
|
|
|
- short sH; //人脸中心点到剪辑矩形上边沿的高度,即矩形高度=sH*2,矩形按4:3的比例,宽度=SH*2*4/3
|
|
|
+ short sX; //浜鸿劯涓�績鐐筙鍧愭爣
|
|
|
+ short sY; //浜鸿劯涓�績鐐筜鍧愭爣
|
|
|
+ short sH; //浜鸿劯涓�績鐐瑰埌鍓�緫鐭╁舰涓婅竟娌跨殑楂樺害锛屽嵆鐭╁舰楂樺害=sH*2锛岀煩褰㈡寜4锛�3鐨勬瘮渚嬶紝瀹藉害=SH*2*4/3
|
|
|
};
|
|
|
|
|
|
enum SceneEnum
|
|
|
{
|
|
|
UncertainScene = 0,
|
|
|
- LockScene, //锁定
|
|
|
- UnLockScene, //失去锁定
|
|
|
- RockScene, //晃动
|
|
|
- ForwardScened, //向前
|
|
|
- BackwardScened //向后
|
|
|
+ LockScene, //閿佸畾
|
|
|
+ UnLockScene, //澶卞幓閿佸畾
|
|
|
+ RockScene, //鏅冨姩
|
|
|
+ ForwardScened, //鍚戝墠
|
|
|
+ BackwardScened //鍚戝悗
|
|
|
};
|
|
|
|
|
|
enum DistanceEnum
|
|
|
{
|
|
|
UncertainDistance = 0,
|
|
|
- OperateDistance, //操作距离
|
|
|
- CloseDistance, //近端
|
|
|
- FarDistance //远端
|
|
|
+ OperateDistance, //鎿嶄綔璺濈�
|
|
|
+ CloseDistance, //杩戠�
|
|
|
+ FarDistance //杩滅�
|
|
|
};
|
|
|
|
|
|
enum PoseEnum
|
|
|
{
|
|
|
UncertainPose = 0,
|
|
|
- StandPose, //站立
|
|
|
- SitPose //坐立
|
|
|
+ StandPose, //绔欑珛
|
|
|
+ SitPose //鍧愮珛
|
|
|
};
|
|
|
|
|
|
enum CameraEnum
|
|
|
{
|
|
|
- EnvironCamera = 0, //环境相机
|
|
|
- OperatorCamera, //操作相机
|
|
|
+ EnvironCamera = 0, //鐜��鐩告満
|
|
|
+ OperatorCamera, //鎿嶄綔鐩告満
|
|
|
ErrorCamera
|
|
|
};
|
|
|
|
|
|
struct CCustomerPosition
|
|
|
{
|
|
|
- CameraEnum eCamera; //1、2号摄像头
|
|
|
- SceneEnum eScene; //0不确定,1开始锁定、2失去锁定、3晃动、4向前、5向后
|
|
|
- DistanceEnum eDistance; //0不确定,1操作距离,2近端,3远端
|
|
|
- PoseEnum ePose; //0不确定,1-站立,2-坐立
|
|
|
+ CameraEnum eCamera; //1銆�2鍙锋憚鍍忓ご
|
|
|
+ SceneEnum eScene; //0涓嶇‘瀹氾紝1寮€濮嬮攣瀹氥€�2澶卞幓閿佸畾銆�3鏅冨姩銆�4鍚戝墠銆�5鍚戝悗
|
|
|
+ DistanceEnum eDistance; //0涓嶇‘瀹氾紝1鎿嶄綔璺濈�锛�2杩戠�锛�3杩滅�
|
|
|
+ PoseEnum ePose; //0涓嶇‘瀹氾紝1-绔欑珛锛�2-鍧愮珛
|
|
|
CCustomerRange stRange;
|
|
|
};
|
|
|
|
|
|
-//脸部覆盖物
|
|
|
+//鑴搁儴瑕嗙洊鐗�
|
|
|
struct CCover
|
|
|
{
|
|
|
- BOOL bClearFace; //脸部是否可见
|
|
|
- BOOL bShowEyes; //眼睛是否可见
|
|
|
- BOOL bShowNose; //鼻子是否可见
|
|
|
- BOOL bShowMouth; //嘴巴是否可见
|
|
|
+ BOOL bClearFace; //鑴搁儴鏄�惁鍙��
|
|
|
+ BOOL bShowEyes; //鐪肩潧鏄�惁鍙��
|
|
|
+ BOOL bShowNose; //榧诲瓙鏄�惁鍙��
|
|
|
+ BOOL bShowMouth; //鍢村反鏄�惁鍙��
|
|
|
};
|
|
|
|
|
|
-//人脸亮度
|
|
|
+//浜鸿劯浜�害
|
|
|
enum BrightnessEnum
|
|
|
{
|
|
|
- VeryLow = 0, //极低 < 40
|
|
|
- Lower, //比较低 >40 <80
|
|
|
- NorMal, //正常 >80 <160
|
|
|
- Higher, //比较高 >160 <200
|
|
|
- VeryHigh //极高 >200
|
|
|
+ VeryLow = 0, //鏋佷綆 < 40
|
|
|
+ Lower, //姣旇緝浣� >40 <80
|
|
|
+ NorMal, //姝e父 >80 <160
|
|
|
+ Higher, //姣旇緝楂� >160 <200
|
|
|
+ VeryHigh //鏋侀珮 >200
|
|
|
};
|
|
|
|
|
|
-//客户常规属性
|
|
|
+//瀹㈡埛甯歌�灞炴€�
|
|
|
struct CCustomerStatus
|
|
|
{
|
|
|
- CCustomerPosition stCustomerPos; //客户位置属性
|
|
|
- CCover stCustomerCover; //覆盖属性
|
|
|
- BrightnessEnum eBrightness; //人脸亮度
|
|
|
+ CCustomerPosition stCustomerPos; //瀹㈡埛浣嶇疆灞炴€�
|
|
|
+ CCover stCustomerCover; //瑕嗙洊灞炴€�
|
|
|
+ BrightnessEnum eBrightness; //浜鸿劯浜�害
|
|
|
};
|
|
|
|
|
|
enum SexEnum
|
|
|
{
|
|
|
- UncertainSex = 0, //不知道
|
|
|
- Women, //女人
|
|
|
- Man // 男人
|
|
|
+ UncertainSex = 0, //涓嶇煡閬�
|
|
|
+ Women, //濂充汉
|
|
|
+ Man // 鐢蜂汉
|
|
|
};
|
|
|
|
|
|
enum YoungOldEnum
|
|
|
{
|
|
|
- UncertainAge = 0, //不知道
|
|
|
- Child, //小孩
|
|
|
- Young, //年轻人
|
|
|
- MiddleAged, //中年人
|
|
|
- Old //老年人
|
|
|
+ UncertainAge = 0, //涓嶇煡閬�
|
|
|
+ Child, //灏忓�
|
|
|
+ Young, //骞磋交浜�
|
|
|
+ MiddleAged, //涓�勾浜�
|
|
|
+ Old //鑰佸勾浜�
|
|
|
};
|
|
|
|
|
|
enum HeightEnunm
|
|
|
{
|
|
|
- UncertainHeight = 0, //不知道
|
|
|
- Low, //矮
|
|
|
- Middle, //中等
|
|
|
- High //高
|
|
|
+ UncertainHeight = 0, //涓嶇煡閬�
|
|
|
+ Low, //鐭�
|
|
|
+ Middle, //涓�瓑
|
|
|
+ High //楂�
|
|
|
};
|
|
|
-//客户交互属性
|
|
|
+//瀹㈡埛浜や簰灞炴€�
|
|
|
struct CCustomerAppearance
|
|
|
{
|
|
|
- SexEnum eSex; // 0不知道,1女,2男
|
|
|
- YoungOldEnum eYoungOld; //0不知道,1小孩,2年轻人,3中年人,4老人
|
|
|
- HeightEnunm eHeight; //0不知道,1矮,2中等,3高
|
|
|
+ SexEnum eSex; // 0涓嶇煡閬擄紝1濂筹紝2鐢�
|
|
|
+ YoungOldEnum eYoungOld; //0涓嶇煡閬擄紝1灏忓�锛�2骞磋交浜猴紝3涓�勾浜猴紝4鑰佷汉
|
|
|
+ HeightEnunm eHeight; //0涓嶇煡閬擄紝1鐭�紝2涓�瓑锛�3楂�
|
|
|
};
|
|
|
|
|
|
-//监控模式
|
|
|
+//鐩戞帶妯″紡
|
|
|
enum MonitorEnum
|
|
|
{
|
|
|
- FaceDetect =0, //人脸检测
|
|
|
- MotionTarckAndFaceDetect, //运动跟踪+人脸检测
|
|
|
- MotionTarckAndFaceRecog, //运动跟踪+人脸识别
|
|
|
+ FaceDetect =0, //浜鸿劯妫€娴�
|
|
|
+ MotionTarckAndFaceDetect, //杩愬姩璺熻釜+浜鸿劯妫€娴�
|
|
|
+ MotionTarckAndFaceRecog, //杩愬姩璺熻釜+浜鸿劯璇嗗埆
|
|
|
};
|
|
|
|
|
|
struct __declspec(novtable) CVideoMonitorEvent
|
|
|
{
|
|
|
- virtual void GenerateCloseEvent() = 0; //有人靠近 1.5M
|
|
|
- virtual void GenerateLeaveEvent() = 0; //客户离开,客户消失或退出到接近距离外1.5M
|
|
|
- virtual void GenerateEnterOperateEvent() = 0; //客户进入操作距离 0.5M
|
|
|
- virtual void GenerateBackToCloseEvent() = 0; //客户退回到接近距离
|
|
|
- virtual void GenerateAppearEvent() = 0; //有人出现在视野中
|
|
|
- virtual void GenerateCustomerChangeEvent() = 0; //客户已经换人
|
|
|
+ virtual void GenerateCloseEvent() = 0; //鏈変汉闈犺繎 1.5M
|
|
|
+ virtual void GenerateLeaveEvent() = 0; //瀹㈡埛绂诲紑,瀹㈡埛娑堝け鎴栭€€鍑哄埌鎺ヨ繎璺濈�澶�1.5M
|
|
|
+ virtual void GenerateEnterOperateEvent() = 0; //瀹㈡埛杩涘叆鎿嶄綔璺濈� 0.5M
|
|
|
+ virtual void GenerateBackToCloseEvent() = 0; //瀹㈡埛閫€鍥炲埌鎺ヨ繎璺濈�
|
|
|
+ virtual void GenerateAppearEvent() = 0; //鏈変汉鍑虹幇鍦ㄨ�閲庝腑
|
|
|
+ virtual void GenerateCustomerChangeEvent() = 0; //瀹㈡埛宸茬粡鎹�汉
|
|
|
|
|
|
- virtual void GenerateCaptureFaceEvent() = 0; //捕获脸部事件
|
|
|
- virtual void GenerateLoseFaceEvent() = 0; //失去脸部事件
|
|
|
- virtual void GenerateFaceCaptureFC() = 0; //人脸识别崩溃
|
|
|
+ virtual void GenerateCaptureFaceEvent() = 0; //鎹曡幏鑴搁儴浜嬩欢
|
|
|
+ virtual void GenerateLoseFaceEvent() = 0; //澶卞幓鑴搁儴浜嬩欢
|
|
|
+ virtual void GenerateFaceCaptureFC() = 0; //浜鸿劯璇嗗埆宕╂簝
|
|
|
};
|
|
|
|
|
|
struct CImageFrame
|
|
@@ -182,36 +182,36 @@ struct __declspec(novtable) CHostApi
|
|
|
|
|
|
#define debugerror
|
|
|
|
|
|
-class Clibfacecapture_impl; //桥接
|
|
|
+class Clibfacecapture_impl; //妗ユ帴
|
|
|
|
|
|
-// 此类是从 libfacecapture.dll 导出的
|
|
|
+// 姝ょ被鏄�粠 libfacecapture.dll 瀵煎嚭鐨�
|
|
|
class LIBFACECAPTURE_API Clibfacecapture
|
|
|
{
|
|
|
public:
|
|
|
- //EnvironMinVideoName:环境摄像头小分辨率共享视频队列的文件名
|
|
|
- //EnvironMaxVideoName:环境摄像头大分辨率共享视频队列的文件名
|
|
|
- //OperateVideoName:操作摄像头共享视频队列的文件名
|
|
|
- //OperateVideoName默认为Null时设备运行于单摄像头模式
|
|
|
- //开始视频监控,pHost:事件,nMonitorFreq:监控频率,单位ms,MonitorType:监控类型,有三种模式可供选择
|
|
|
+ //EnvironMinVideoName锛氱幆澧冩憚鍍忓ご灏忓垎杈ㄧ巼鍏变韩瑙嗛�闃熷垪鐨勬枃浠跺悕
|
|
|
+ //EnvironMaxVideoName锛氱幆澧冩憚鍍忓ご澶у垎杈ㄧ巼鍏变韩瑙嗛�闃熷垪鐨勬枃浠跺悕
|
|
|
+ //OperateVideoName锛氭搷浣滄憚鍍忓ご鍏变韩瑙嗛�闃熷垪鐨勬枃浠跺悕
|
|
|
+ //OperateVideoName榛樿�涓篘ull鏃惰�澶囪繍琛屼簬鍗曟憚鍍忓ご妯″紡
|
|
|
+ //寮€濮嬭�棰戠洃鎺�,pHost:浜嬩欢锛宯MonitorFreq:鐩戞帶棰戠巼锛屽崟浣峬s,MonitorType锛氱洃鎺х被鍨嬶紝鏈変笁绉嶆ā寮忓彲渚涢€夋嫨
|
|
|
Clibfacecapture(BOOL *pResult, CHostApi *pHostAPI,CVideoMonitorEvent*pHost,LPCSTR EnvironMinVideoName,LPCSTR EnvironMaxVideoName = NULL,LPCSTR OperateVideoName=NULL,MonitorEnum eMonitorType=MotionTarckAndFaceDetect);
|
|
|
~Clibfacecapture(void);
|
|
|
|
|
|
bool StartFaceCapture();
|
|
|
bool StopFaceCapture();
|
|
|
|
|
|
- //快照
|
|
|
+ //蹇�収
|
|
|
BOOL SnapShot(CImageFrame&img);
|
|
|
- //有多少其他用户
|
|
|
+ //鏈夊�灏戝叾浠栫敤鎴�
|
|
|
BOOL GetCustomerNum(UINT&num);
|
|
|
- //获取所有用户FACEID
|
|
|
+ //鑾峰彇鎵€鏈夌敤鎴稦ACEID
|
|
|
BOOL GetTrackFace(__int64 *arrFaceIDs, int *size);
|
|
|
- //获取主用户的常规属性
|
|
|
+ //鑾峰彇涓荤敤鎴风殑甯歌�灞炴€�
|
|
|
BOOL GetMainCustomerStatus(__int64 &FaceID,CCustomerStatus &Property);
|
|
|
- //获取其他用户的常规属性
|
|
|
+ //鑾峰彇鍏朵粬鐢ㄦ埛鐨勫父瑙勫睘鎬�
|
|
|
BOOL GetCustomerStatus(__int64 FaceID,CCustomerStatus &Property);
|
|
|
- //获取主用户的交互属性
|
|
|
+ //鑾峰彇涓荤敤鎴风殑浜や簰灞炴€�
|
|
|
BOOL GetCustomerAppearance(__int64 FaceID,CCustomerAppearance &Property);
|
|
|
- void SetLightChange();//灯光变化,此时算法要做处理防止误判
|
|
|
+ void SetLightChange();//鐏�厜鍙樺寲锛屾�鏃剁畻娉曡�鍋氬�鐞嗛槻姝㈣�鍒�
|
|
|
void SetCameraState(int nState);
|
|
|
private:
|
|
|
Clibfacecapture_impl*m_pImpl;
|