windows下VC高度封装,人脸识别,人脸匹配应用FaceMatch-第一章-《零度屏幕录像软件》

得益于SeetaFace Engine的无私奉献,我们才能方便应用人脸识别和人脸匹配到我们的日常应用中!

近期,本工作室高度封装了人脸检测和人脸识别的OCX控件


先看下接口函数吧

void Init(void);
void SetVideoProperty(LONG width, LONG height);
LONG Start(void);
void InputData(BYTE* pData, LONG nLen);
void Stop(void);
void OutputFaceVideo(BYTE* pFaceData, LONG nFaceDataLen, LONG width, LONG height, BYTE* pMatchData, LONG nMatchDataLen);
void SetShowWnd(LONG hWnd);

LONG GetPicFaceData(LPCTSTR szFile, BYTE* pFaceData, BYTE* pLen);
LONG GetPicFaceData2(BYTE* pInPic, LONG width, LONG height, BYTE* pFaceData, BYTE* pLen);
LONG MatchFace(BYTE* pIn1, LONG nLen1, BYTE* pIn2, LONG nLen2);
LONG GetPicData(LPCTSTR szFile, BYTE* pData, BYTE* width, BYTE* height);


所有函数都是高度封装的,调用也相当简单:

1、初始:

m_facematch.Init();

        设置图片或者视频显示窗口:
m_facematch.SetShowWnd((long)m_video1.GetSafeHwnd());


       2、打开图像并显示(或者打开摄像头也可以这样调用)

// 设置过滤器   
TCHAR szFilter[] = _T("图像(*.jpg)|*.jpg|图像(*.jpeg)|*.jpeg|图像(*.png)|*.png|图像(*.bmp)|*.bmp|所有文件(*.*)|*.*||");
// 构造打开文件对话框   
CFileDialog fileDlg(TRUE, _T("jpg|jpeg|png|bmp|gif"), NULL, 0, szFilter, this);


// 显示打开文件对话框   
if (IDOK == fileDlg.DoModal())
{
CString szPicPath = fileDlg.GetPathName();
BYTE *pPicData=new BYTE[800*600*3];
int width,height;
int nPicDataLen=m_facematch.GetPicData(szPicPath,pPicData,(BYTE*)&width,(BYTE*)&height);
if(nPicDataLen>0)
{
m_facematch.SetVideoProperty(width,height);
m_facematch.Start();
m_facematch.InputData(pPicData,nPicDataLen);
}
else
MessageBox(L"无法打开图片!");


delete []pPicData;


}


      3、OCX回调函数返回匹配人脸数据(固定8K)

//控件回调函数里,包含了人脸识别数据
void CTestFaceMatch_LDDlg::OutputFaceVideoFacematchctrl1(unsigned char* pFaceData, long nFaceDataLen, long width, long height, unsigned char* pMatchData, long nMatchDataLen)
{
MatchLock1.Lock();
memcpy(MatchData1,pMatchData,nMatchDataLen);
MatchLock1.Unlock();

}


      4、根据控件回调函数里的人脸识别数据,计算相识度
void CTestFaceMatch_LDDlg::OnBnClickedButton4()//识别相似度:一般相似度大于等于60~70以上,可以视为一个人
{
MatchLock1.Lock();
MatchLock2.Lock();
long nSimilarity=m_facematch.MatchFace(MatchData1,8*1024,MatchData2,8*1024);//相似度:100最大,0最小
MatchLock2.Unlock();
MatchLock1.Unlock();


CString szFormat;
szFormat.Format(L"相似度:%d%%",nSimilarity);
m_Similarity.SetWindowText(szFormat);
}


下面附下载地址,使用前先双击注册.OCX注册控件。目录下有示例图片

demo下载地址(seeta_fr_v1.0.bin文件太大,只能传百度云):链接:http://pan.baidu.com/s/1nvE6LM5 密码:osgx

由于时间有限,这次只上传了照片对比,下一章做一个摄像头的人脸实时匹配

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
基于百度API的人脸识别是一种利用百度深度学习能力的人脸识别技术,它提供了多种功能,包括人脸检测与属性分析、人脸1:1对比、人脸搜索、活体检测等能力。这些功能可以应用于金融、泛安防、零售等行业场景,满足身份核验、人脸考勤、闸机通行等业务需求。\[1\] 在使用百度API进行人脸识别时,可以通过调用相应的接口来实现不同的功能。例如,可以使用faceDetect接口来检测是否是人,并评测人像的各类指标;使用faceMatch接口来检测两个图片的人物匹配度;使用faceSearch接口来检索一张人脸是否在人脸库中;使用faceUpdate接口来更新人脸库中的人脸信息等等。\[2\] 在具体的代码实现中,可以使用百度提供的Java SDK来调用API接口。通过创建AipFace对象,并传入相应的参数,可以实现对人脸识别接口的调用。例如,在AiFaceMain类中,可以通过创建FaceDao对象,并调用相应的方法来实现人脸识别功能。\[3\] 总之,基于百度API的人脸识别是一种强大的技术,可以应用于各种场景,实现身份核验、人脸考勤、闸机通行等业务需求。 #### 引用[.reference_title] - *1* *2* *3* [人脸识别——基于百度智能云实现](https://blog.csdn.net/weixin_39083192/article/details/105586616)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

周星星的星

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值