[发明专利]面部表情捕获数据的转存与发送方法有效

专利信息
申请号: 201510331828.X 申请日: 2015-06-16
公开(公告)号: CN104951304B 公开(公告)日: 2017-12-26
发明(设计)人: 韩成;张超;权巍;薛耀红;李华;蒋振刚;杨华民;石乐民;杨帆 申请(专利权)人: 长春理工大学
主分类号: G06F9/44 分类号: G06F9/44
代理公司: 吉林长春新纪元专利代理有限责任公司22100 代理人: 王薇
地址: 130022 吉林省长春市*** 国省代码: 吉林;22
权利要求书: 查看更多 说明书: 查看更多
摘要: 发明涉及一种将面部表情数据转存与发送的方法,其特征在于所需的数据结构提供一种存储面部表情数据的数据结构,PointDada结构体包括X,Y,Z三个数据成员,FaceData结构体中包括一个PointData类型的pdata数组、一个变量Length,pdata数组中包括27个元素,FaceData定义一个指针变量,用fData表示;所需的文件利用OptiTrack面部表情捕捉系统的7台FLEXV100R2摄像机和ARENA Expression软件,对某人的面部表情进行实时捕获,将捕获到的数据保存在文件face.pt2中;其可以快速地将面部表情数据不通过面部捕捉软件进行发送,从而使与面部捕捉软件发送的数据达到一致性。
搜索关键词: 面部 表情 捕获 数据 转存 发送 方法
【主权项】:
一种将面部表情数据转存与发送的方法,其特征在于:所需的数据结构:提供一种存储面部表情数据的数据结构,PointData结构体包括X,Y,Z三个数据成员,FaceData结构体中包括一个PointData类型的pdata数组、一个变量Length,pdata数组中包括27个元素,FaceData定义一个指针变量,用fData表示;所需的文件:利用OptiTrack面部表情捕捉系统的7台FLEX:V100R2摄像机和ARENA Expression软件,对某人的面部表情进行实时捕获,将捕获到的数据保存在文件face.pt2中;在计算机中,使用OptiTrack公司的提供的NatNet SDK开发包实现face.pt2文件中的面部表情数据的转存及发送,以下使用的NatNetML命名空间均来自NatNet SDK开发包,按以下步骤实现:步骤1、在计算机中,启动ARENA Expression软件,打开文件face.pt2,选择Stream功能,点击“StartStreamingFrame”按钮后,ARENA Expression软件将文件face.pt2中的数据发送出去;步骤2、定义NatNetML命名空间中的NatNetClientML类的一个对象,用m_MatNet表示,定义NatNetML命名空间中的MarkerSet类的一个对象,用ms表示,定义NatNetML命名空间中的DataDescriptor类的一个列表对象,用descs表示;步骤3、定义NatNetML命名空间中的FrameOfMocapData类的一个对象,用m_FrameOfData表示,定义NatNetML命名空间中的FrameOfMocapData类的一个队列对象,用m_FrameQueue表示;步骤4、m_FrameQueue对象调用Dequeue函数,并将调用Dequeue函数得到的返回值赋给m_FrameOfData,如果m_FrameOfData不为空,执行步骤5,否则执行步骤4;步骤5、m_MatNet调用GetDataDescriptions函数,其中descs列表对象为GetDataDescriptions函数的参数,如果调用GetDataDescriptions函数得到的返回值为真,则继续执行步骤6,否则执行步骤5;步骤6、定义NatNetML命名空间中的DataDescriptor类的一个对象,用md表示,在descs列表中循环获取数据赋值给md,将md对象的类型转换成NatNetML命名空间中的MarkerSet类,并赋值给ms对象;步骤7、构造一个向量,用temp_name表示,temp_name(i)表示向量中的第i个元素,i=1,2,…,27;步骤8、ms对象中的MarkerNames成员中的第i个元素赋值给temp_name[i],i=1, 2,…,27;步骤9、定义XmlDoucument类的一个对象,用xmlDoc表示,定义xmlNode类的一个对象,用root表示,定义xmlNode类的一个对象,用node表示;步骤10、建立XML文件,用try表示,xmlDoc对象调用Load函数,try.xml文件名为Load函数的参数,xmlDoc对象调用CreateElement函数,字符串Root为CreateElement函数的参数,并将调用CreateElement函数得到的返回值赋给root,xmlDoc调用AppendChild函数,root对象为AppendChild函数的参数;步骤11、定义XmlElement类的一个对象,用elem表示,xmlDoc对象调用CreateElement函数,字符串face为CreateElement函数的参数,调用CreateElement函数得到的返回值赋给elem,root对象调用AppendChild函数,elem为AppendChild函数的参数;步骤12、定义NatNetML命名空间中的MarkerSetData类的一个对象,用mt表示,m_FrameOfData对象中的MarkerSets数组中的第1个元素赋值给mt对象;步骤13、定义XmlDoucument类的一个对象,用elem_tmp表示,xmlDoc对象调用CreateElement函数,调用CreateElement函数得到的返回值赋给elem_tmp;步骤14、elem_tmp对象调用SetAttribute函数,mt对象的Makers成员中的第j个元素中的x成员为SetAttribute函数的参数,elem_tmp对象调用SetAttribute函数,mt对象的Makers成员中的第j个元素中的y成员为SetAttribute函数的参数,elem_tmp对象调用SetAttribute函数,mt对象Makers成员中的第j个元素中的z成员为SetAttribute函数的参数,elem对象调用AppendChild函数,elem_tmp为AppendChild函数的参数,j=1,2,…,27,反复执行步骤11至步骤14,直到所有m_FrameOfData对象中的数据读取完成;步骤15、xmlDox对象调用save函数,字符串try.xml为save函数的参数;步骤16、定义XmlDoucument类的一个对象,用xml_temp表示,定义XMLElement类的3个对象,分别用root、face、elem表示,定义一个变量,用Length表示,定义一个变量,用num表示,num=0,定义一个变量,用MAKER_SIZEer表示,MAKER_SIZEer=0;步骤17、xml_temp调用LoadFile函数,字符串try.xml为函数LoadFile的参数;步骤18、xml_temp调用FirstChildElement函数,调用FirstChildElement函数得到的返回值赋给proot,proot调用FirstChildElement函数,调用FirstChildElement函数得到的返回值赋给pface,pface调用FirstChildElement函数,调用FirstChildElement函数得到的返回值赋给pelem,调用GetframeLength函数,调用GetframeLength函数得到的返回值赋给Length,proot为GetframeLength函数的参数;步骤19、定义一个变量,用count表示,count=0,定义一个变量,用sizemaker表示,sizemaker=1,定义NatNetServer类的一个指针变量,用theServer表示;步骤20、将pelem的x、y、z成员分别赋值给fData的pdata数组中第sizemaker个元素的X、Y、Z成员,sizemaker=sizemaker+1,pelem调用NextSiblingElement函数,调用NextSiblingElement函数得到的返回值赋给pelem,如果sizemaker等于27,继续执行步骤21,否则,重复步骤20;步骤21、pface调用NextSiblingElement函数,调用NextSiblingElement函数得到的返回值赋值给pface,pface调用FirstChildElement函数,调用FirstChildElement函数得到的返回值赋值给pelem,sizemaker=0,count=count+1,如果count等于Length,则继续执行步骤22,否则执行步骤20;步骤22、定义sFrameOfMocapData类的一个对象,用frame表示,调用ZeroMemory函数,frame为ZeroMemory函数的第一个参数,sFrameOfMocapData的大小为ZeroMemory函数的第二个参数;步骤23、将fData+num的pdata数组中第iMarker个元素的X成员赋值给frame下MocapData数组中的Markers二维数组中的第iMarker行的第一个元素,将fData+num指针的pdata数组中第iMarker个元素的Y成员赋值给frame下MocapData数组中的Markers二维数组中的第iMarker行的第二个元素,将fData+num指针的pdata数组中第iMarker个元素的Z成员赋值给frame下MocapData数组中的Markers二维数组中的第iMarker行的第三个元素,iMarker= 1,2,…,27;步骤24、定义sPacket结构体的一个变量,用packet变量表示,定义NatNetServer类的一个theServer指针变量,调用PacketFraneOfMocapData函数和SendPacket函数;步骤25、如果num大于Length,面部表情捕获数据的转存与发送方法结束,否则,num=num+1,frame的nMarkerSets成员的值加1,重新执行步骤23;通过以上步骤依次将存储在face.pt2文件中数据进行转存及发送。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。

该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于长春理工大学,未经长春理工大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服

本文链接:http://www.vipzhuanli.com/patent/201510331828.X/,转载请声明来源钻瓜专利网。

×

专利文献下载

说明:

1、专利原文基于中国国家知识产权局专利说明书;

2、支持发明专利 、实用新型专利、外观设计专利(升级中);

3、专利数据每周两次同步更新,支持Adobe PDF格式;

4、内容包括专利技术的结构示意图流程工艺图技术构造图

5、已全新升级为极速版,下载速度显著提升!欢迎使用!

请您登陆后,进行下载,点击【登陆】 【注册】

关于我们 寻求报道 投稿须知 广告合作 版权声明 网站地图 友情链接 企业标识 联系我们

钻瓜专利网在线咨询

周一至周五 9:00-18:00

咨询在线客服咨询在线客服
tel code back_top