pb 调用虹软_python调用虹软2.0

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)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/340361.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用Java和JSF构建一个简单的CRUD应用

使用Okta的身份管理平台轻松部署您的应用程序 使用Okta的API在几分钟之内即可对任何应用程序中的用户进行身份验证,管理和保护。 今天尝试Okta。 JavaServer Faces(JSF)是用于构建Web应用程序的Java框架,其中心是作为用户界面构建…

ftp 传输速度_ftp上传工具下载,8款优秀的ftp上传工具下载软件

FTP上传工具现在有很多种,而且各有各的特点,至于FTP上传工具哪个好用呢?小编认为萝卜白菜各有所爱,看个人喜好,还结合服务器和各种功能方面的需求。小编用的就是iis7服务器管理工具,比较方便而且功能不错&a…

c语言实践教程实验题答案,C语言课后实验教程习题答案

第5章以后的答案第五章答案-1-1. 【答案】&#xff1a; (1) m1 n2 (2) m2 n3 (3) a>0 并且a2. 【答案】&#xff1a;(2)for (i0;i<10;i) {……} 3. 【答案】&#xff1a;32 4. 【答案】&#xff1a; main() {char x ;int y;printf("please input :");scanf(&qu…

t分布 u分布 卡方分布_中心极限定理|z分布|t分布|卡方分布

生物统计学抽样分布&#xff1a;n个样本会得到n个统计量&#xff0c;将这n个统计量作为总体&#xff0c;该总体的分布即是抽样分布根据辛钦大数定律&#xff0c;从一个非正态分布的总体中抽取的含量主n的样本&#xff0c;当n充分大时&#xff0c;样本平均数渐近服从正态分布。因…

java ee打印功能_Java EE:异步构造和功能

java ee打印功能介绍 Java EE具有许多API和构造以支持异步执行。 从可伸缩性和性能的角度来看&#xff0c;这是至关重要的。 让我们假设2个模块相互交互。 当模块A &#xff08;发送方&#xff09;以同步方式向模块B &#xff08;接收方&#xff09;发送消息时&#xff0c;通信…

驱动备份工具哪个好_大庆seo排名优化推广公司工具哪个好

工具哪个好g81915seo排名优化推广公司大庆,网站成立时&#xff0c;搜索引擎比较完善&#xff0c;基本上不需要长期优化。然而&#xff0c;近年来&#xff0c;搜索引擎优化的频率开始增加&#xff0c;这让人们有点好奇。搜索引擎优化的目的是什么&#xff1f;为什么会受到企业的…

c语言动画原理,动画详解十大经典排序算法(C语言版)

排序算法是程序员必备的基础知识&#xff0c;弄明白它们的原理和实现很有必要。本文中将通过非常细节的动画展示出算法的原理&#xff0c;配合代码更容易理解。概述由于待排序的元素数量不同&#xff0c;使得排序过程中涉及的存储器不同&#xff0c;可将排序方法分为两类&#…

rust如何改睡袋_腐蚀rust怎么做睡袋 | 手游网游页游攻略大全

发布时间&#xff1a;2016-05-07腐蚀是一款FPS僵尸类生存游戏,这款游戏中玩家可以体验到非常自由的游戏方式,玩家需要寻找生存的资源,同时也需要及时预防僵尸和其他不怀还以的玩家的入侵,下面是新手全面攻略分享. 新手全面攻略玩法详解 [Rust游戏介绍] ...标签&#xff1a;游戏…

测量时间:从Java到内核再到

问题陈述 当您深入研究时&#xff0c;即使是最基本的问题也会变得很有趣。 今天&#xff0c;我想深入研究一下Java时间。 我们将从Java API的最基础知识开始&#xff0c;然后逐步降低堆栈&#xff1a;通过OpenJDK源代码glibc一直到Linux内核。 我们将研究各种环境下的性能开销&…

小程序 const moment = require('moment')_C++大作业-XXX管理程序

理工科大一往往会学习C/C&#xff0c;期末会有大作业。这篇文章就是一个简单的C大作业程序。我也是大一&#xff0c;所以觉着哪里写得不好欢迎在评论区提出。程序总体上讲是个“总分总”结构。一 实现这个程序要八步。第一步 程序的功能设计程序的目标有两个。一是辅助我备考四…

c语言osversioninfoex,xi52qian

头文件 一. 对终端的操作相关头文件#include 1. 输入istream2. 输出ostream3. iostream继承istream和ostream 所以它具有输入输出功能。为了方便这个库定义了下列三个标准流对象&#xff1a;1. cin 代表标准输入istream类对象一般地cin使我们能够从用户终端读入数据。2. cout …

go hive skynet_云风的skynet在国内外来看究竟算什么水平?可以一统国内游戏服务端框架吗?...

它和云风过往放出来的东西一样&#xff0c;是非常具有实践性的&#xff0c;可以解决实际开发问题的。目前我所在的手游项目使用 Erlang 进行服务器端开发的&#xff0c;如果重新开始&#xff0c;我会选择使用 skynet。游戏服务器开发中的难点&#xff0c;上面 无瞳已经提到了两…

数据库 测试数据生成_测试数据生成器和对象母亲:另一种外观

数据库 测试数据生成在测试中构造对象通常是一项艰巨的工作&#xff0c;通常会产生大量可重复且难以阅读的代码。 有两种用于处理复杂测试数据的常见解决方案&#xff1a; Object Mother和Test Data Builder 。 两者都有优点和缺点&#xff0c;但是&#xff08;巧妙地&#xff…

电脑机器人_视频|电话积分换平板电脑和扫地机器人?女子拿回家后……-

报警人小王(左二)讲述事情经过。沙坪坝警方供图 华龙网-新重庆客户端 发华龙网-新重庆客户端11月9日11时讯(记者 张勇)“警察叔叔&#xff0c;这个店好坑人哦&#xff0c;我好气愤&#xff01;”11月6日11时许&#xff0c;重庆市沙坪坝区一名年轻女子拨打110报警电话称&#xf…

位置环PID模糊C语言,PID和位置环

EDA365欢迎您登录&#xff01;您需要 登录 才可以下载或查看&#xff0c;没有帐号&#xff1f;注册x所谓PID 自动控制&#xff0c;是对一个确定系统的- -个过程量的自动调节过程:* q* }3 B" * V P# H1)举例说&#xff0c;直流电机的速度&#xff0c;就是-一个过程量&#…

seata xid是什么_阿里开源的分布式事务框架 Seata

1. Seata 概述Seata 是 Simple Extensible Autonomous Transaction Architecture 的简写&#xff0c;由 feascar 改名而来。Seata 是阿里开源的分布式事务框架&#xff0c;属于二阶段提交模式。目前github上已经有 12267 颗星了&#xff0c;也很活跃&#xff0c;最新的提交时间…

python输入print跳到documentation-习题 48: 更复杂的用户输入

习题 48: 更复杂的用户输入 你的游戏可能一路跑得很爽&#xff0c;不过你处理用户输入的方式肯定让你不胜其烦了。每一个房间都需要一套自己的语句&#xff0c;而且只有用户完全输入正确后才能执行。你需要一个设备&#xff0c;它可以允许用户以各种方式输入语汇。例如下面的机…

有关有效企业测试的视频课程

我已经制作了一些有关有效企业测试的视频。 我仍然在现实世界项目中看到这个主题的巨大重要性。 这是我在测试Enterprise Java项目中的经验以及一些示例。 1.介绍和有效的Maven使用 在此视频中&#xff0c;我将介绍测试过程&#xff0c;并演示如何使用Maven在标准企业项目中构…

android自定义弹出对话框,使用FlyDialog实现自定义Android弹窗对话框

前言学习的时候要用到弹窗&#xff0c;但是又觉得i同自带的弹窗样式有点不太美观&#xff0c;搜索资料后发现了FlycoDialog这个开源库,效果很好&#xff0c;而且实现起来也比较方便。先列举一些比较好看的效果:NormalListDialogActionSheetDialog这篇文章主要来讲一下他的自定义…

nacos 本地测试_Nacos集群配置实例(windows下测试)

1、首先 fork 一份 nacos 的代码到自己的 github 库&#xff0c;然后把代码 clone 到本地。git地址&#xff1a;https://github.com/alibaba/nacos.git2、然后将你的项目导入到ideal编辑器中(找到子项目distribution)3、添加集群节点&#xff1a;找到文件distribution->conf…