python3+虹软2.0的所有功能整合测试完成,并对虹软所有功能进行了封装,现提供demo
主要功能,
1.人脸识别
2.人脸特征提取
3.特征比对
4.特征数据存储与比对
其他特征没有添加

sdk 下载请戳这里

face_class.py

复制代码
from ctypes import *
#人脸框
class MRECT(Structure):
_fields_=[(u'left1',c_int32),(u'top1',c_int32),(u'right1',c_int32),(u'bottom1',c_int32)]
#版本信息 版本号,构建日期,版权说明
class ASF_VERSION(Structure):
_fields_=[('Version',c_char_p),('BuildDate',c_char_p),('CopyRight',c_char_p)]
#单人人脸信息 人脸狂,人脸角度
class ASF_SingleFaceInfo(Structure):
_fields_=[('faceRect',MRECT),('faceOrient',c_int32)]
#多人人脸信息 人脸框数组,人脸角度数组,人脸数
class ASF_MultiFaceInfo(Structure):
# _fields_=[('faceRect',POINTER(MRECT)),('faceOrient',POINTER( c_int32)),('faceNum',c_int32)]
_fields_=[(u'faceRect',POINTER(MRECT)),(u'faceOrient',POINTER(c_int32)),(u'faceNum', c_int32)]
# _fields_=[(u'faceRect',MRECT*),(u'faceOrient',c_int32*),(u'faceNum',c_int32)]
#人脸特征 人脸特征,人脸特征长度
class ASF_FaceFeature(Structure):
_fields_=[('feature',c_void_p),('featureSize',c_int32)]
#自定义图片类
class IM:
def __init__(self):
self.filepath=None
self.date=None
self.width=
self.height=
复制代码

face_dll.py

复制代码
from ctypes import *
from face_class import *
wuyongdll=CDLL('d:\python\Test\Face\lib\X64\libarcsoft_face.dll')
dll=CDLL('d:\python\Test\Face\lib\X64\libarcsoft_face_engine.dll')
dllc=cdll.msvcrt
ASF_DETECT_MODE_VIDEO = 0x00000000
ASF_DETECT_MODE_IMAGE = 0xFFFFFFFF
c_ubyte_p = POINTER(c_ubyte)
#激活
jihuo=dll.ASFActivation
jihuo.restype = c_int32
jihuo.argtypes = (c_char_p,c_char_p)
#初始化
chushihua=dll.ASFInitEngine
chushihua.restype=c_int32
chushihua.argtypes=(c_long,c_int32,c_int32,c_int32,c_int32,POINTER(c_void_p))
#人脸识别
shibie=dll.ASFDetectFaces
shibie.restype=c_int32
shibie.argtypes=(c_void_p,c_int32,c_int32,c_int32,POINTER(c_ubyte),POINTER(ASF_MultiFaceInfo))
#特征提取
tezheng=dll.ASFFaceFeatureExtract
tezheng.restype=c_int32
tezheng.argtypes=(c_void_p,c_int32,c_int32,c_int32,POINTER(c_ubyte),POINTER(ASF_SingleFaceInfo),POINTER(ASF_FaceFeature)) #特征比对
bidui=dll.ASFFaceFeatureCompare
bidui.restype=c_int32
bidui.argtypes=(c_void_p,POINTER(ASF_FaceFeature),POINTER(ASF_FaceFeature),POINTER(c_float))
malloc = dllc.malloc
free = dllc.free
memcpy = dllc.memcpy malloc.restype = c_void_p
malloc.argtypes = (c_size_t, )
free.restype = None
free.argtypes = (c_void_p, )
memcpy.restype = c_void_p
memcpy.argtypes = (c_void_p, c_void_p, c_size_t)
复制代码

face_function.py

复制代码
import face_dll,face_class
from ctypes import *
import cv2
from io import BytesIO
# from Main import *
Handle=c_void_p()
c_ubyte_p = POINTER(c_ubyte)
# 激活函数
def JH(appkey,sdkey):
ret=face_dll.jihuo(appkey,sdkey)
return ret
# 初始化函数
def CSH():# :视频或图片模式,2角度,3最小人脸尺寸推荐16,4最多人脸数最大50,5功能,6返回激活句柄
ret=face_dll.chushihua(0xFFFFFFFF,0x1,,,,byref(Handle))
# Main.Handle=Handle
return ret,Handle
# cv2记载图片并处理
def LoadImg(im):
img=cv2.imread(im.filepath)
sp=img.shape
img=cv2.resize(img,(sp[]//4*4,sp[0]//4*4))
sp=img.shape
im.data=img
im.width=sp[]
im.height=sp[]
return im
def RLSB(im):
faces=face_class.ASF_MultiFaceInfo()
img=im.data
imgby=bytes(im.data)
imgcuby=cast(imgby,c_ubyte_p)
ret=face_dll.shibie(Handle,im.width,im.height,0x201,imgcuby,byref(faces))
return ret,faces
# 显示人脸识别图片
def showimg(im,faces):
for i in range(,faces.faceNum):
ra=faces.faceRect[i]
cv2.rectangle(im.data,(ra.left1,ra.top1),(ra.right1,ra.bottom1),(,,,),)
cv2.imshow('faces',im.data)
cv2.waitKey()
#提取人脸特征
def RLTZ(im,ft):
detectedFaces=face_class.ASF_FaceFeature()
img=im.data
imgby=bytes(im.data)
imgcuby=cast(imgby,c_ubyte_p)
ret=face_dll.tezheng(Handle,im.width,im.height,0x201,imgcuby,ft,byref(detectedFaces))
if ret==:
retz=face_class.ASF_FaceFeature()
retz.featureSize=detectedFaces.featureSize
#必须操作内存来保留特征值,因为c++会在过程结束后自动释放内存
retz.feature=face_dll.malloc(detectedFaces.featureSize)
face_dll.memcpy(retz.feature,detectedFaces.feature,detectedFaces.featureSize)
# print('提取特征成功:',detectedFaces.featureSize,mem)
return ret,retz
else:
return ret
#特征值比对,返回比对结果
def BD(tz1,tz2):
jg=c_float()
ret=face_dll.bidui(Handle,tz1,tz2,byref(jg))
return ret,jg.value
#单人特征写入文件
def writeFTFile(feature,filepath):
f = BytesIO(string_at(feature.feature,feature.featureSize))
a=open(filepath,'wb')
a.write(f.getvalue())
a.close()
#从多人中提取单人数据
def getsingleface(singleface,index):
ft=face_class.ASF_SingleFaceInfo()
ra=singleface.faceRect[index]
ft.faceRect.left1=ra.left1
ft.faceRect.right1=ra.right1
ft.faceRect.top1=ra.top1
ft.faceRect.bottom1=ra.bottom1
ft.faceOrient=singleface.faceOrient[index]
return ft
#从文件获取特征值
def ftfromfile(filepath):
fas=face_class.ASF_FaceFeature()
f=open('d:/1.dat','rb')
b=f.read()
f.close()
fas.featureSize=b.__len__()
fas.feature=face_dll.malloc(fas.featureSize)
face_dll.memcpy(fas.feature,b,fas.featureSize)
return fas
复制代码

Main1.py

复制代码
import face_dll,face_class
from ctypes import *
import cv2
import face_function as fun
Appkey=b''
SDKey=b''
# 激活
ret=fun.JH(Appkey,SDKey)
if ret== or ret==:
print('激活成功:',ret)
else:
print('激活失败:',ret)
pass
# 初始化
ret=fun.CSH()
if ret[]==:
print('初始化成功:',ret,'句柄',fun.Handle)
else:
print('初始化失败:',ret)
# 加载图片
im=face_class.IM()
im.filepath='e:/2.jpg'
im=fun.LoadImg(im)
print(im.filepath,im.width,im.height)
# cv2.imshow('im',im.data)
# cv2.waitKey()
print('加载图片完成:',im) ret=fun.RLSB(im)
if ret[]==-:
print('人脸识别失败:',ret)
pass
else:
print('人脸识别成功:',ret)
# 显示人脸照片
# showimg(im,ret)
#提取单人1特征
ft=fun.getsingleface(ret[],)
tz1=fun.RLTZ(im,ft)[]
#提取单人2特征
ft=fun.getsingleface(ret[],)
tz2=fun.RLTZ(im,ft)[]
#特征保存到文件
# fun.writeFTFile(tz1,'d:/1.dat')
# fun.writeFTFile(tz2,'d:/2.dat')
#文件获取特征
tz=fun.ftfromfile('d:/1.dat')
jg=fun.BD(tz1,tz)
print(jg[])
#结果比对
# jg=fun.BD(tz1,tz2)
# print(jg[])
复制代码

python3+arcface2.0 离线人脸识别 demo的更多相关文章

  1. python3+虹软2.0 离线人脸识别 demo

    python3+虹软2.0的所有功能整合测试完成,并对虹软所有功能进行了封装,现提供demo主要功能,1.人脸识别2.人脸特征提取3.特征比对4.特征数据存储与比对其他特征没有添加 虹软SDK下载戳这 ...

  2. C# 离线人脸识别Demo 使用ArcFace 2.0开发完成

    环境:     win7以上  VS2013以上    sdk版本:ArcFace v2.0    x86 x64平台Debug.Release配置都已通过编译 下载地址:https://github ...

  3. 虹软2.0免费离线人脸识别 Demo [C++]

    环境: win10(10.0.16299.0)+ VS2017 sdk版本:ArcFace v2.0 OPENCV3.43版本 x64平台Debug.Release配置都已通过编译 下载地址:http ...

  4. 【C#】 基于ArcFace 2.0—视频人脸识别Demo

    使用的虹软人脸识别技术 啥话不说,不用跪求,直接给下载地址:http://common.tenzont.com/comdll/arcface2demo.zip(话说附件的大小不限制,还是说我的文件太大 ...

  5. 虹软2.0 离线人脸识别 Android 开发 Demo

    环境要求1.运行环境 armeabi-v7a2.系统要求 Android 5.0 (API Level 21)及以上3.开发环境 Android Studio 下载地址:https://github. ...

  6. Python3+Dlib实现简单人脸识别案例

    Python3+Dlib实现简单人脸识别案例 写在前边 很早很早之前,当我还是一个傻了吧唧的专科生的时候,我就听说过人脸识别,听说过算法,听说过人工智能,并且也出生牛犊不怕虎般的学习过TensorFl ...

  7. 人脸识别Demo解析C#

    概述 不管你注意到没有,人脸识别已经走进了生活的角角落落,钉钉已经支持人脸打卡,火车站实名认证已经增加了人脸自助验证通道,更别提各个城市建设的『智能城市』和智慧大脑了.在人脸识别业界,通常由人脸识别提 ...

  8. 百度离线人脸识别sdk的使用

    1.1下载sdk运行 百度离线人脸识别sdk的使用 1.2配置环境 添加至项目,可以拖动复制或者以类库形式添加face-resource此文件夹 放到根目录上一层 激活文件与所有dll引用放到根目录嫌 ...

  9. 转:基于开源项目OpenCV的人脸识别Demo版整理(不仅可以识别人脸,还可以识别眼睛鼻子嘴等)【模式识别中的翘楚】

    文章来自于:http://blog.renren.com/share/246648717/8171467499 基于开源项目OpenCV的人脸识别Demo版整理(不仅可以识别人脸,还可以识别眼睛鼻子嘴 ...

随机推荐

  1. 用markdown + html写一封简历

    0. 前言 1. 阶段1 - 确定需要几个模块 2. 阶段2 - 使用纯文字填充简历 3. 阶段3 - 预留空格 4. 阶段4 - 文章垂直方向的调整 5. 阶段5 - 居中对齐 6. 阶段6 - 加 ...

  2. 小步快跑的公司可以最简化操作直接通过log4net将日志写入ElasticSearch

     很多小步快跑的公司,开发人员多则3-4个,面对巨大业务压力,日连夜的赶着上线,快速试错,自然就没时间搭建一些基础设施,比如说logCenter,但初期 项目不稳定,bug又多,每次都跑到生产去找日志 ...

  3. Java 在PDF 中添加超链接

    对特定元素添加超链接后,用户可以通过点击被链接的元素来激活这些链接,通常在被链接的元素下带有下划线或者以不同的颜色显示来进行区分.按照使用对象的不同,链接又可以分为:文本超链接,图像超链接,E-mai ...

  4. 使用JDBC操作MySQL数据库

    一.JDBC简介 JDBC(Java DataBase Connectivity)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一的访问,它由一组用Java语言编写的类和接口组 ...

  5. UiPath针对SAP的输入技巧

    我观察到在SAP中不论是SimulateType,还是SendWindowMessages,Type Into的输入速度都很慢(是逐个字符输入的).如果只是一次两次的输入倒也没什么,但如果是需要批量多 ...

  6. 自动获取windows或者linux系统IP

    1.获取Windows下的IP java.net.InetAddress.getLocalHost().getHostAddress(); 2.获取linux下的IP /** * 获取Linux下的I ...

  7. SQL Server使用sp_spaceused查看表记录存在不准确的情况

    在之前写过一篇博客"关系数据库如何快速查询表的记录数",里面介绍了使用sp_spaceused查看表的记录数是否正确的问题,具体如下:   关于问题3:有多个索引的表,是否记录数会 ...

  8. #if和#ifdef的区别

    学习STM32偶然发现:在Keil中直接预先定义宏USE_STDPERIPH_DRIVER,但是却没有指定宏的值.而在头文件中判断用的是如下代码: #ifdef USE_STDPERIPH_DRIVE ...

  9. Luogu P5279 [ZJOI2019]麻将

    ZJOI2019神题,间接送我退役的神题233 考场上由于T2写挂去写爆搜的时候已经没多少时间了,所以就写挂了233 这里不多废话直接开始讲正解吧,我们把算法分成两部分 1.建一个"胡牌自动 ...

  10. 【XSS】对抗蠕虫 —— 如何让按钮不被 JS 自动点击

    前言 XSS 自动点按钮有什么危害? 在社交网络里,很多操作都是通过点击按钮发起的,例如发表留言.假如留言系统有 XSS,用户中招后除了基本攻击外,还能进行传播 -- XSS 自动填入留言内容,并模拟 ...