python调用虹软2.0目前没有任何demo可以参考,自己研究了2个晚上终于把第一步做出来了,使用了opencv来加载和显示图片,龟速更新中

这一版作废,新版已发出:https://www.cnblogs.com/wxt51/p/10122106.html

第三版:https://www.cnblogs.com/wxt51/p/10125460.html

 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',MRECT*50),(u'faceOrient',c_int32*50),(u'faceNum',c_int32)]
#人脸特征 人脸特征,人脸特征长度
class ASF_FaceFeature(Structure):
_fields_=[('feature',c_byte),('featureSize',c_int32)]
#年龄信息 0=未知 >0则检测出年龄 ,人脸数
class ASF_AgeInfo(Structure):
_fields_=[('ageArray',c_int32),('num',c_int32)]
#性别 0=男 1=女 -1未知,人脸数
class ASF_GenderInfo(Structure):
_fields_=[('genderArray',c_int32),('num',c_int32)]
 #调用dll需要引入ctypes
from ctypes import *
from face_class import *
import io
from PIL import Image
import cv2
dll=CDLL('d:\python\Test\Face\lib\X64\libarcsoft_face.dll')
Facedll=CDLL('d:\python\Test\Face\lib\X64\libarcsoft_face_engine.dll')
#由于dll是c,所以字符串要做类型转换,否则,激活失败,APPID无效
Appkey=c_char_p(b'自己去注册')
SDKey=c_char_p(b'自己去注册')
# ASF_VERSION a=Facedll.ASFActiviation(Appkey,SDKey)
vs=Facedll.ASFActivation
#激活函数返回0,初始化成功,返回90114已激活,其他则为失败 ,重新激活需删除asf_install.dat 文件
ret=Facedll.ASFActivation(Appkey,SDKey)
print('激活:',ret)
#初始化引擎
ASF_OP_0_ONLY = 0x1
ASF_DETECT_MODE_VIDEO = 0x00000000
ASF_DETECT_MODE_IMAGE = 0xFFFFFFFF
r=c_void_p()
#初始化引擎
a=Facedll.ASFInitEngine(c_long(ASF_DETECT_MODE_IMAGE),c_int32(ASF_OP_0_ONLY),c_int32(16),c_int32(50),c_int8(ASF_OP_0_ONLY),byref(r))
print('初始化',a)
print('初始化返回',r)
c_ubyte_p = POINTER(c_ubyte)
ASVL_PAF_I420 = 0x601
ASVL_PAF_RGB24_B8G8R8 = 0x201
img1=cv2.imread('e:/5.jpg')
sp=img1.shape
#调整图片大小,正好是4的倍数,否则会报错
img=cv2.resize(img1,(sp[1]//4*4,sp[0]//4*4))
# img=cv2.cvtColor(img,cv2.COLOR_BGR2YUV_I420)
# img=cv2.cvtColor(img,cv2.COLOR_BGRA2YUV_I420)
# img=cv2.cvtColor(img,cv2.COLOR_BGR2YUV_IYUV)
sp=img.shape
wd=sp[1]
he=sp[0]
print('宽高',wd,he)
# cv2.imshow('1',img)
# cv2.waitKey(0)
#内存指针返回ASF_MultiFaceInfo类型--回调函数
tz=POINTER(ASF_MultiFaceInfo)()
#图片转换成字字节
b=bytes(img)
#强转为C++的byte类型
d=cast(b,c_ubyte_p)
#调用多人人脸识别
a=Facedll.ASFDetectFaces(r,c_int32(wd),c_int32(he),c_int32(ASVL_PAF_RGB24_B8G8R8),d,byref(tz))
print('返回特征',tz)
print('返回值',a)
if a==0:
tezheng=tz.contents
print(tezheng.faceNum)
for i in range(0,50):
# cv2.rectangle(img,(tezheng.faceRect[1].left1,tezheng.faceRect[1].top1),(tezheng.faceRect[1].right1,tezheng.faceRect[1].bottom1),(255,0,0),2)
cv2.rectangle(img,(tezheng.faceRect[i].left1,tezheng.faceRect[i].top1),(tezheng.faceRect[i].right1,tezheng.faceRect[i].bottom1),(255,0,0),2)
cv2.imshow('',img)
cv2.waitKey(0)

python调用虹软2.0(全网首发)-更新中的更多相关文章

  1. python调用虹软2.0

    第一版踩了无数的坑,终于第二版把坑全添了,这次更新可以正常获取人脸数,角度,代码可读性更高,继续更新中 第三版已发出 https://www.cnblogs.com/wxt51/p/10125460. ...

  2. python调用虹软2.0第二版

    第一版踩了无数的坑,终于第二版把坑全添了,这次更新可以正常获取人脸数,角度,代码可读性更高,继续更新中 第三版已发出 https://www.cnblogs.com/wxt51/p/10125460. ...

  3. python调用虹软2.0第三版

    这一版,对虹软的功能进行了一些封装,添加了人脸特征比对,比对结果保存到文件,和从文件提取特征进行比对,大体功能基本都已经实现,可以进行下一步的应用开发了 face_class.py from ctyp ...

  4. 《Python自然语言处理》中文版-纠错【更新中。。。】

    最近在看<Python自然语言处理>中文版这本书,可能由于是从py2.x到py3.x,加上nltk的更新的原因,或者作者的一些笔误,在书中很多代码都运行不能通过,下面我就整理一下一点有问题 ...

  5. python模块详解 | selenium(持续更新中)

    目录: 关于selenium Selenium 安装Selenium 安装浏览器驱动 配置环境变量 selenium方法详解 定位元素 元素操作 浏览器操作 鼠标事件 浏览器事件 设置元素等待 多表单 ...

  6. How ASP.NET Web API 2.0 Works?[持续更新中…]

    一.概述 RESTful Web API [Web标准篇]RESTful Web API [设计篇] 在一个空ASP.NET Web项目上创建一个ASP.NET Web API 2.0应用 二.路由 ...

  7. Hexo-butterfly-magicv3.0.1(持续更新中....)

    介绍 Hexo-butterfly魔改v3.0.1 软件架构 本项目是基于Hexo静态博客的个性主题---蝴蝶主题魔改版 安装教程 克隆 安装依赖 hexo命令生成public文件夹 启动hexo-s ...

  8. python调用C++实例:用C++对numpy执行BFS(广度优先搜索)

    下文的代码可能展示不全,详情请下载文件:用cpp遍历ndarray.rar 问题背景: 现在我有一张二值图test.npy,需要对其闭区域进行孔洞填充,如下图所示: 文件下载链接:用cpp遍历ndar ...

  9. 【大盛】全网首发HTC One/M7 最新本地化TrickDroid9.0/固件升级/永久root/高级,快速设置/稳定,流畅经典ROM

    了解更多请关注:点击打开链接 ROM版本 HTC One/M7_TrickDroid9.0.0 ROM作者 雪狼团队-大盛   http://weibo.com/DaShengdd Android版本 ...

随机推荐

  1. python web框架 django 添加环境变量

    C:\Users\Administrator.QH-20170325TNQR\AppData\Local\Programs\Python\Python36\Scripts把环境变量加上 可以在本地执行 ...

  2. XTU1198:Candy(背包)

    版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/libin56842/article/details/26182519 题目描写叙述 Henry和Le ...

  3. .def文件如何编写

    DLL中导出函数的声明有两种方式:一种为在函数声明中加上__declspec(dllexport),这里不再举例说明:另外一种方式是采用模块定义(.def) 文件声明. 规则是:1.首先创建 一个DL ...

  4. js如何打印对象

    js调试中经常会碰到输出的内容是对象而无法打印的时候,光靠alert只能打印出object标示,却不能打印出来里面的内容,甚是不方便,于是各方面整理总结了如下一个函数,能够将数组或者对象这类的结果一一 ...

  5. SQL Server 2008数据库手动提交的设置

    有时候我们需要对SQL Server 2008数据库手动提交的方法进行设置,使用Oracle的朋友会注意到Oracle中的手工提交的,如果修改错了数据还可以Rollback.但在SQL Server ...

  6. mysqldump 参数

    mysqldump是mysql用于转存储数据库的实用程序.它主要产生一个SQL脚本,其中包含从头重新创建数据库所必需的命令CREATE TABLE INSERT等.对于导出的文件,可使用SOURCE命 ...

  7. 随机深林和GBDT

    随机森林(Random Forest): 随机森林是一个最近比较火的算法,它有很多的优点: 在数据集上表现良好 在当前的很多数据集上,相对其他算法有着很大的优势 它能够处理很高维度(feature很多 ...

  8. CCoolBar 的替代方案 CDockablePane。

    (阅读受众需有一定MFC知识储备.) (技术支持:http://www.cnblogs.com/shuhaoc/archive/2011/06/26/cdockableform.html) 在以往很多 ...

  9. import MySQLdb 与 import mysql 有什么区别?

    MySQLdb 只支持Python 2.* ,暂时还不支持3.* 可以用PyMySQL 代替,把__init__.py 中添加俩行: import pymysql pymysql.install_as ...

  10. 移动端打印输出内容以及网络请求-vconsole.js

    今天,无意间从别人那里得知一个很好的js插件--vconsole.min.js,可以实现在移动端打印输出内容以及查看网络请求.下面记录使用方式. 1.下载vconsole.min.js插件 以下复制了 ...