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',POINTER(MRECT)),(u'faceOrient',POINTER(c_int32)),(u'faceNum', c_int32)]

15 # _fields_=[(u'faceRect',MRECT*50),(u'faceOrient',c_int32*50),(u'faceNum',c_int32)]

16 #人脸特征 人脸特征,人脸特征长度

17 class ASF_FaceFeature(Structure):

18 _fields_=[('feature',c_void_p),('featureSize',c_int32)]

19 #自定义图片类

20 class IM:

21 def __init__(self):

22 self.filepath=None

23 self.date=None

24 self.width=0

25 self.height=0

face_dll.py

1 from ctypes import *

2 from face_class import *

3 wuyongdll=CDLL('d:\python\Test\Face\lib\X64\libarcsoft_face.dll')

4 dll=CDLL('d:\python\Test\Face\lib\X64\libarcsoft_face_engine.dll')

5 ASF_DETECT_MODE_VIDEO = 0x00000000

6 ASF_DETECT_MODE_IMAGE = 0xFFFFFFFF

7 c_ubyte_p = POINTER(c_ubyte)

8 #激活

9 jihuo=dll.ASFActivation

10 jihuo.restype = c_int32

11 jihuo.argtypes = (c_char_p,c_char_p)

12 #初始化

13 chushihua=dll.ASFInitEngine

14 chushihua.restype=c_int32

15 chushihua.argtypes=(c_long,c_int32,c_int32,c_int32,c_int32,POINTER(c_void_p))

16 #人脸识别

17 shibie=dll.ASFDetectFaces

18 shibie.restype=c_int32

19 shibie.argtypes=(c_void_p,c_int32,c_int32,c_int32,POINTER(c_ubyte),POINTER(ASF_MultiFaceInfo))

main.py

1 import face_dll,face_class

2 from ctypes import *

3 import cv2

4 Appkey=b''

5 SDKey=b''

6 Handle=c_void_p() #全局句柄

7 c_ubyte_p = POINTER(c_ubyte)

8 # 激活函数

9 def JH():

10 ret=face_dll.jihuo(Appkey,SDKey)

11 return ret

12 # 初始化函数

13 def CSH():# 1:视频或图片模式,2角度,3最小人脸尺寸推荐16,4最多人脸数最大50,5功能,6返回激活句柄

14 ret=face_dll.chushihua(0xFFFFFFFF,0x1,16,50,5,byref(Handle))

15 return ret

16 # cv2记载图片并处理

17 def LoadImg(im):

18 img=cv2.imread(im.filepath)

19 sp=img.shape

20 img=cv2.resize(img,(sp[1]//4*4,sp[0]//4*4))

21 sp=img.shape

22 im.data=img

23 im.width=sp[1]

24 im.height=sp[0]

25 return im

26 def RLSB(im):

27 faces=face_class.ASF_MultiFaceInfo()

28 img=im.data

29 imgby=bytes(im.data)

30 imgcuby=cast(imgby,c_ubyte_p)

31 ret=face_dll.shibie(Handle,im.width,im.height,0x201,imgcuby,byref(faces))

32 # print('ret',faces.faceNum)

33 # for i in range(0,faces.faceNum):

34 # rr=faces.faceRect[i]

35 # print('range',rr.left1)

36 # print('jd',faces.faceOrient[i])

37 if ret==0:

38 return faces

39 else:

40 return ret

41 # 激活

42 ret=JH()

43 if ret==0 or ret==90114:

44 print('激活成功:',ret)

45 else:

46 print('激活失败:',ret)

47 pass

48 # 初始化

49 ret=CSH()

50 if ret==0:

51 print('初始化成功:',ret,'句柄',Handle)

52 else:

53 print('初始化失败:',ret)

54 # 显示人脸识别图片

55 def showimg(im,faces):

56 for i in range(0,faces.faceNum):

57 ra=faces.faceRect[i]

58 cv2.rectangle(im.data,(ra.left1,ra.top1),(ra.right1,ra.bottom1),(255,0,0,),2)

59 cv2.imshow('faces',im.data)

60 cv2.waitKey(0)

61 # 加载图片

62 im=face_class.IM()

63 im.filepath='e:/4.jpg'

64 im=LoadImg(im)

65 print(im.filepath,im.width,im.height)

66 # cv2.imshow('im',im.data)

67 # cv2.waitKey(0)

68 print('加载图片完成:',im)

69

70 ret=RLSB(im)

71 if ret==-1:

72 print('人脸识别失败:',ret)

73 pass

74 else:

75 print('人脸识别成功:',ret)

76 # 显示人脸照片

77 showimg(im,ret)

pb 调用虹软_python调用虹软2.0相关推荐

  1. python不用模块调用麦克风_python调用pyaudio使用麦克风录制wav声音文件的教程

    python的pyaudio可以进行录音,播放,生成wav文件等等,WAVE是录音时用的标准的WINDOWS文件格式,文件的扩展名为WAV,数据本身的格式为PCM或压缩型,属于无损音乐格式的一种.在我 ...

  2. python调用系统命令_Python调用外部系统命令

    利用Python调用外部系统命令的方法可以提高编码效率.调用外部系统命令完成后可以通过获取命令执行返回结果码.命令执行的输出结果进行进一步的处理.本文主要描述Python常见的调用外部系统命令的方法, ...

  3. python网页调用摄像头_Python调用摄像头

    while(True):ret, frame = capture.read()#摄像头读取,ret为是否成功打开摄像头,true,false. frame为视频的每一帧图像frame = cv2.fl ...

  4. python api调用 验证码_Python调用创蓝253短信验证码API文档

    #!/usr/local/bin/python #-*- coding:utf-8 -*- # Author: jacky # Time: 14-2-22 下午11:48 # Desc: 短信http ...

  5. python调用打印机_Python调用打印机参考例子

    参考资料: http://blog.csdn.net/jdh99/article/details/42585987 http://www.oschina.net/question/1438043_23 ...

  6. python页面调用接口_python调用接口——requests模块

    前提:安装pip install requests 导入import requests 1.get请求   result=requests.get(url,d).json()  或  .text 2. ...

  7. pb调用java webservice_PB调用各类WebService或c#程序

    慢慢的有很多接口pb都已经无法调用了,还有一些进制计算,位移等pb都无法实现,这时最简单的就是用c#做好,让pb调用.但是pb只能调用最基础的c++开发的标准dll.通过无数次的百度,我找到了一个好的 ...

  8. c语言实现爬虫功能,用C/C 扩展Python语言_python 调用c语言 python实现简单爬虫功能_python实现简单爬虫...

    用C/C 扩展Python语言 Python是一门功能强大的脚本语言,它的强大不仅表现在功能上,还表现在其扩展性上.她提供大量的API以方便程序员利用C/C++对Python进行扩展.因为执行速度慢几 ...

  9. 2.API的调用过程(3环进0环)

    _KUSER_SHARED_DATA /*这是一个结构体,翻译过来就是: Kernel与User分享的一块数据. 0环与3环共享的一块内存 */ 在User层和Kernel层分别定义了一个_KUSER ...

最新文章

  1. JS 正则表达式 0.001 ~99.999
  2. 事件溯源|日志记录-一个基础的微服务模式
  3. Adobe Acrobat Pro设置高亮快捷键
  4. 建模分析师与算法工程师的主要区别
  5. 《爬虫写得好,铁窗关到老》教你把握爬虫的法律边界!㊫
  6. 数字化方法基础(一)_基础操作与生成四面体
  7. 1000并发的系统服务器配置,1000人并发服务器配置
  8. IDEA统计项目代码量
  9. Android车牌识别SDK
  10. 3D游戏从入门到精通-2 -5
  11. hpe服务器中ilo的作用,产品技术-HPE iLO-新华三集团-H3C
  12. 五、03【Java IO模型】之字节流
  13. 5G时代红利来袭,创投商机大爆发
  14. Kali Linux 2020.1安装教程
  15. delete adjacent duplicates from用法(以某个关键字删除相邻重复行的数据)
  16. android 翻页动态效果,Android 实现翻书的动画效果
  17. Hive 优化--SQL执行顺序、Hive参数、数据倾斜 、小文件优化
  18. FP-growth 算法与Python实现
  19. 北斗导航 | 北斗三号(BDS-3)单频和双频RTK定位性能(论文学习)
  20. Docker:windows7系统环境下安装docker:Manifest extraction failed: 找不到Windows运行时类型Windows.Data.Json.JsonObject

热门文章

  1. Apache ActiveMQ中的消息级别授权
  2. Hystrix简介– Hello World
  3. java 方法委托托管_Java Web托管选项流程图
  4. 动态Java代码注入
  5. 在Spring使用AWS SQS创建消息驱动Bean
  6. DI容器是代码污染者
  7. 使用Spring Webservices构建SOAP Webservices代理模块
  8. 3个简单步骤即可测试Java 8
  9. 使用NetBeans Lambda支持在Java 8中使用Lambda表达式对列表进行排序
  10. 让我们将包变成模块系统!