python调用虹软2.0(全网首发)-更新中

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

 1 from ctypes import *
 2 #人脸框
 3 class MRECT(Structure):
 4     _fields_=[(u‘left1‘,c_int32),(u‘top1‘,c_int32),(u‘right1‘,c_int32),(u‘bottom1‘,c_int32)]
 5 #版本信息     版本号,构建日期,版权说明
 6 class ASF_VERSION(Structure):
 7     _fields_=[(‘Version‘,c_char_p),(‘BuildDate‘,c_char_p),(‘CopyRight‘,c_char_p)]
 8 #单人人脸信息  人脸狂,人脸角度
 9 class ASF_SingleFaceInfo(Structure):
10     _fields_=[(‘faceRect‘,MRECT),(‘faceOrient‘,c_int32)]
11 #多人人脸信息 人脸框数组,人脸角度数组,人脸数
12 class ASF_MultiFaceInfo(Structure):
13     # _fields_=[(‘faceRect‘,POINTER(MRECT)),(‘faceOrient‘,POINTER( c_int32)),(‘faceNum‘,c_int32)]
14     _fields_=[(u‘faceRect‘,MRECT*50),(u‘faceOrient‘,c_int32*50),(u‘faceNum‘,c_int32)]
15 #人脸特征 人脸特征,人脸特征长度
16 class ASF_FaceFeature(Structure):
17     _fields_=[(‘feature‘,c_byte),(‘featureSize‘,c_int32)]
18 #年龄信息 0=未知 >0则检测出年龄 ,人脸数
19 class ASF_AgeInfo(Structure):
20     _fields_=[(‘ageArray‘,c_int32),(‘num‘,c_int32)]
21 #性别 0=男 1=女 -1未知,人脸数
22 class ASF_GenderInfo(Structure):
23     _fields_=[(‘genderArray‘,c_int32),(‘num‘,c_int32)]
 1 #调用dll需要引入ctypes
 2 from ctypes import *
 3 from face_class import *
 4 import io
 5 from PIL import Image
 6 import cv2
 7 dll=CDLL(‘d:\python\Test\Face\lib\X64\libarcsoft_face.dll‘)
 8 Facedll=CDLL(‘d:\python\Test\Face\lib\X64\libarcsoft_face_engine.dll‘)
 9 #由于dll是c,所以字符串要做类型转换,否则,激活失败,APPID无效
10 Appkey=c_char_p(b‘自己去注册‘)
11 SDKey=c_char_p(b‘自己去注册‘)
12 # ASF_VERSION a=Facedll.ASFActiviation(Appkey,SDKey)
13 vs=Facedll.ASFActivation
14 #激活函数返回0,初始化成功,返回90114已激活,其他则为失败 ,重新激活需删除asf_install.dat 文件
15 ret=Facedll.ASFActivation(Appkey,SDKey)
16 print(‘激活:‘,ret)
17 #初始化引擎
18 ASF_OP_0_ONLY = 0x1
19 ASF_DETECT_MODE_VIDEO = 0x00000000
20 ASF_DETECT_MODE_IMAGE = 0xFFFFFFFF
21 r=c_void_p()
22 #初始化引擎
23 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))
24 print(‘初始化‘,a)
25 print(‘初始化返回‘,r)
26 c_ubyte_p = POINTER(c_ubyte)
27 ASVL_PAF_I420 = 0x601
28 ASVL_PAF_RGB24_B8G8R8 = 0x201
29 img1=cv2.imread(‘e:/5.jpg‘)
30 sp=img1.shape
31 #调整图片大小,正好是4的倍数,否则会报错
32 img=cv2.resize(img1,(sp[1]//4*4,sp[0]//4*4))
33 # img=cv2.cvtColor(img,cv2.COLOR_BGR2YUV_I420)
34 # img=cv2.cvtColor(img,cv2.COLOR_BGRA2YUV_I420)
35 # img=cv2.cvtColor(img,cv2.COLOR_BGR2YUV_IYUV)
36 sp=img.shape
37 wd=sp[1]
38 he=sp[0]
39 print(‘宽高‘,wd,he)
40 # cv2.imshow(‘1‘,img)
41 # cv2.waitKey(0)
42 #内存指针返回ASF_MultiFaceInfo类型--回调函数
43 tz=POINTER(ASF_MultiFaceInfo)()
44 #图片转换成字字节
45 b=bytes(img)
46 #强转为C++的byte类型
47 d=cast(b,c_ubyte_p)
48 #调用多人人脸识别
49 a=Facedll.ASFDetectFaces(r,c_int32(wd),c_int32(he),c_int32(ASVL_PAF_RGB24_B8G8R8),d,byref(tz))
50 print(‘返回特征‘,tz)
51 print(‘返回值‘,a)
52 if a==0:
53     tezheng=tz.contents
54     print(tezheng.faceNum)
55     for i in range(0,50):
56         # cv2.rectangle(img,(tezheng.faceRect[1].left1,tezheng.faceRect[1].top1),(tezheng.faceRect[1].right1,tezheng.faceRect[1].bottom1),(255,0,0),2)
57         cv2.rectangle(img,(tezheng.faceRect[i].left1,tezheng.faceRect[i].top1),(tezheng.faceRect[i].right1,tezheng.faceRect[i].bottom1),(255,0,0),2)
58     cv2.imshow(‘1‘,img)
59     cv2.waitKey(0)

原文地址:https://www.cnblogs.com/wxt51/p/10111536.html

时间: 2024-10-06 15:45:31

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

python调用虹软2.0第三版

这一版,对虹软的功能进行了一些封装,添加了人脸特征比对,比对结果保存到文件,和从文件提取特征进行比对,大体功能基本都已经实现,可以进行下一步的应用开发了 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)] #版本信息 版本号,构建日期,版权说明

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

最近在看<Python自然语言处理>中文版这本书,可能由于是从py2.x到py3.x,加上nltk的更新的原因,或者作者的一些笔误,在书中很多代码都运行不能通过,下面我就整理一下一点有问题的代码. 第一章: p3.该处为小建议,书中没有错误:关于nltk.book的下载,最好下载到'/nltk_data'文件夹下,如'D:/nltk_data' p7.text3.generate(). generate()函数用法已经过时,正在查找最新的方法. p18.关于FreqDist()函数发生了更新,

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

一.概述 RESTful Web API [Web标准篇]RESTful Web API [设计篇] 在一个空ASP.NET Web项目上创建一个ASP.NET Web API 2.0应用 二.路由 ASP.NET的路由系统:URL与物理文件的分离 ASP.NET的路由系统:路由映射 ASP.NET的路由系统:根据路由规则生成URL ASP.NET Web API路由系统的几个核心类型 Web Host下的URL路由 三.消息处理管道 ASP.NET Web API标准的"管道式"设计

python各种错误提示集锦,持续更新中~

一.今天遇到的一个错误 IndentationError: expected an indented block 翻译:缩进错误.检查下提示所在行,缩进格数 原文地址:https://www.cnblogs.com/taotao1904/p/12069061.html

51CTO下载-python调用java.docx

链接: http://blog.csdn.net/jobjava/article/details/7280798 python调用Java: JPype使用介绍 Python 作为一种灵活的软件开发语言在当今被广泛使用.在软件开发过程中,有时需要在 Python 项目中利用既有的 Java 代码,已达到节省时间和开发成本的目的.因此,找到一个 Python 代码调用 Java 代码的桥梁是非常有意义的. JPype 就是这样的一个工具,利用它可以使 Python 程序方便的调用 Java 代码,

用python调用R做数据分析-准备工作

0.R的介绍 R是自由软件,不带任何担保,在某些条件下你可以将其自由散布,用'license()'或'licence()'来看散布的详细条件. R是个合作计划,有许多人为之做出了贡献,用'contributors()'来看合作者的详细情况,用'citation()'会告诉你如何在出版物中正确地引用R或R程序包,用'demo()'来看一些示范程序,用'help()'来阅读在线帮助文件,或用'help.start()'通过HTML浏览器来看帮助文件. 用'q()'退出R. demo(graphics

Python调用百度接口(情感倾向分析)和讯飞接口(语音识别、关键词提取)处理音频文件

本示例的过程是: 1. 音频转文本 2. 利用文本获取情感倾向分析结果 3. 利用文本获取关键词提取 首先是讯飞的语音识别模块.在这里可以找到非实时语音转写的相关文档以及 Python 示例.我略作了改动,让它可以对不同人说话作区分,并且作了一些封装. 语音识别功能 weblfasr_python3_demo.py 文件: 1 #!/usr/bin/env python 2 # -*- coding: utf-8 -*- 3 """ 4 讯飞非实时转写调用demo(语音识别)

Python调用DLL动态链接库——ctypes使用

最近要使用python调用C++编译生成的DLL动态链接库,因此学习了一下ctypes库的基本使用. ctypes是一个用于Python的外部函数库,它提供C兼容的数据类型,并允许在DLL或共享库中调用函数. 一.Python调用DLL里面的导出函数 1.VS生成dll 1.1 新建动态链接库项目 1.2 在myTest.cpp中输入以下内容: // myTest.cpp : 定义 DLL 应用程序的导出函数. // #include "stdafx.h" #define DLLEXP

Python调用(运行)外部程序

在Python中可以方便地使用os模块运行其他的脚本或者程序,这样就可以在脚本中直接使用其他脚本,或者程序提供的功能,而不必再次编写实现该功能的代码.为了更好地控制运行的进程,可以使用win32process模块中的函数.如果想进一步控制进程,则可以使用ctype模块,直接调用kernel32.dll中的函数. 1 使用os.system函数运行其他程序2 使用ShellExecute函数运行其他程序3 使用CreateProcess函数运行其他程序4 使用ctypes调用kernel32.dl