CN104951304B - 面部表情捕获数据的转存与发送方法 - Google Patents
面部表情捕获数据的转存与发送方法 Download PDFInfo
- Publication number
- CN104951304B CN104951304B CN201510331828.XA CN201510331828A CN104951304B CN 104951304 B CN104951304 B CN 104951304B CN 201510331828 A CN201510331828 A CN 201510331828A CN 104951304 B CN104951304 B CN 104951304B
- Authority
- CN
- China
- Prior art keywords
- functions
- represented
- assigned
- classes
- parameter
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
- 230000008921 facial expression Effects 0.000 title claims abstract description 37
- 238000000034 method Methods 0.000 title claims abstract description 14
- 238000003491 array Methods 0.000 claims abstract description 35
- 230000005540 biological transmission Effects 0.000 claims abstract description 14
- 230000014509 gene expression Effects 0.000 claims abstract description 14
- 239000003550 marker Substances 0.000 claims description 18
- 239000013598 vector Substances 0.000 claims description 5
- 241000208340 Araliaceae Species 0.000 claims description 3
- 235000005035 Panax pseudoginseng ssp. pseudoginseng Nutrition 0.000 claims description 3
- 235000003140 Panax quinquefolius Nutrition 0.000 claims description 3
- 238000010276 construction Methods 0.000 claims description 3
- 235000008434 ginseng Nutrition 0.000 claims description 3
- 239000013604 expression vector Substances 0.000 claims 1
- 230000033001 locomotion Effects 0.000 description 14
- 238000005516 engineering process Methods 0.000 description 7
- 238000004519 manufacturing process Methods 0.000 description 2
- 238000005259 measurement Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000008092 positive effect Effects 0.000 description 1
- 238000005070 sampling Methods 0.000 description 1
Landscapes
- Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本发明涉及一种将面部表情数据转存与发送的方法,其特征在于:所需的数据结构:提供一种存储面部表情数据的数据结构,PointDada结构体包括X,Y,Z三个数据成员,FaceData结构体中包括一个PointData类型的pdata数组、一个变量Length,pdata数组中包括27个元素,FaceData定义一个指针变量,用fData表示;所需的文件:利用OptiTrack面部表情捕捉系统的7台FLEX:V100R2摄像机和ARENA Expression软件,对某人的面部表情进行实时捕获,将捕获到的数据保存在文件face.pt2中;其可以快速地将面部表情数据不通过面部捕捉软件进行发送,从而使与面部捕捉软件发送的数据达到一致性。
Description
技术领域
本发明涉及面部表情捕获数据的转存与发送方法,属于运动捕捉技术领域。
背景技术
随着科学技术的发展,运动捕捉技术已经在动画、电影、运动教学等领域得到了广泛的应用。运动捕捉技术是一种用于准确测量运动物体在三维空间运动状况的技术,它通过运动捕捉设备把运动物体的运动状况以数字的形式记录下来,然后使用计算机对运动数据进行处理,得到不同时间计量单位上物体的空间坐标。当前的运动捕捉技术主要包括以下几种方式:机械式运动捕捉、电磁式运动捕捉、声学式运动捕捉、光学式运动捕捉等。光学式运动捕捉具有可表演动作幅度大、无线缆和机械装置的束缚,采样速率高、精度高、系统扩充成本低等优点。因此,在动画、影视制作过程中,大多选用光学式动作捕捉系统。动作捕捉系统还可以进一步分为身体运动捕捉系统和面部表情捕捉系统,如NaturalPoint公司的OptiTrack动作捕捉系统,其中OptiTrack面部表情系统有7个运动捕捉相机,ARENAExpression软件可以实现真实角色面部表情的实时捕捉和发送,但面部表情系统与身体运动捕捉系统无法同时进行工作,增加了动画、影片的制作难度和周期,为此,本发明提出了一种面部表情捕获数据的转存与发送的方法,该方法只需对ARENA Expression软件中pt2格式的文件进行一次转存操作,在发送捕捉数据时,不必打开ARENA Expression软件对数据进行发送,只需对xml文件内的数据进行发送即可。
发明内容
本发明的目的在于提出了一种将面部表情数据转存及发送的方法,其可以快速地将面部表情数据不通过面部捕捉软件进行发送,从而使与面部捕捉软件发送的数据达到一致性。
本发明的技术方案是这样实现的:一种将面部表情数据转存与发送的方法,其特征在于:所需的数据结构:提供一种存储面部表情数据的数据结构,PointDada结构体包括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文件中数据进行转存及发送。
本发明的积极效果是面部表情捕获数据的转存与发送的方法,可以将OptiTrack面部表情捕捉系统捕捉到的面部表情数据转换成自己定义的数据格式,在发送过程中可以脱离ARENA Expression软件,进行面部表情数据的发送,提高了数据发送的灵活性。
具体实施方式
下面结合实施例对本发明做进一步的描述:
一种将面部表情数据转存与发送的方法,其特征在于:
所需的数据结构:本发明提供一种存储面部表情数据的数据结构,PointDada结构体包括X,Y,Z三个数据成员,FaceData结构体中包括一个PointData类型的pdata数组、一个变量Length,pdata数组中包括27个元素,FaceData定义一个指针变量,用fData表示。
所需的文件:利用OptiTrack面部表情捕捉系统的7台FLEX:V100R2摄像机和ARENAExpression软件,对某人的面部表情进行实时捕获,将捕获到的数据保存在文件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文件中数据进行转存及发送。
Claims (1)
1.一种将面部表情数据转存与发送的方法,其特征在于:所需的数据结构:提供一种存储面部表情数据的数据结构,PointData结构体包括X,Y,Z三个数据成员,FaceData结构体中包括一个PointData类型的pdata数组、一个变量Length,pdata数组中包括27个元素,FaceData定义一个指针变量,用fData表示;所需的文件:利用OptiTrack面部表情捕捉系统的7台FLEX:V100R2摄像机和ARENA Expression软件,对某人的面部表情进行实时捕获,将捕获到的数据保存在文件face.pt2中;在计算机中,使用OptiTrack公司的提供的NatNetSDK开发包实现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文件中数据进行转存及发送。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510331828.XA CN104951304B (zh) | 2015-06-16 | 2015-06-16 | 面部表情捕获数据的转存与发送方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510331828.XA CN104951304B (zh) | 2015-06-16 | 2015-06-16 | 面部表情捕获数据的转存与发送方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104951304A CN104951304A (zh) | 2015-09-30 |
CN104951304B true CN104951304B (zh) | 2017-12-26 |
Family
ID=54165975
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510331828.XA Expired - Fee Related CN104951304B (zh) | 2015-06-16 | 2015-06-16 | 面部表情捕获数据的转存与发送方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104951304B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1347646A2 (en) * | 2002-03-20 | 2003-09-24 | Oki Electric Industry Company, Limited | Communication terminal for transmission of facial information |
CN104410911A (zh) * | 2014-12-31 | 2015-03-11 | 合一网络技术(北京)有限公司 | 基于视频情感标注辅助识别面部表情的方法 |
CN104582187A (zh) * | 2015-01-14 | 2015-04-29 | 山东大学 | 基于人脸识别和表情识别的记录与灯光控制系统及方法 |
-
2015
- 2015-06-16 CN CN201510331828.XA patent/CN104951304B/zh not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1347646A2 (en) * | 2002-03-20 | 2003-09-24 | Oki Electric Industry Company, Limited | Communication terminal for transmission of facial information |
CN104410911A (zh) * | 2014-12-31 | 2015-03-11 | 合一网络技术(北京)有限公司 | 基于视频情感标注辅助识别面部表情的方法 |
CN104582187A (zh) * | 2015-01-14 | 2015-04-29 | 山东大学 | 基于人脸识别和表情识别的记录与灯光控制系统及方法 |
Non-Patent Citations (4)
Title |
---|
Transmitting and decoding facial expressions;Smith M L et al;《Psychological science》;20050301;第16卷(第3期);第184-189页 * |
Understanding the recognition of facial identity and facial expression;Calder A J et al;《Nature Reviews Neuroscience》;20050831;第6卷(第8期);第641-651页 * |
三维面部数据采集与 NURBS曲面重构;孟凡文等;《激光与红外》;20100331;第40卷(第3期);第334-338页 * |
飞行员面部面罩密封域的数据测量与特征分析;王兴伟等;《人类工效学》;20010630;第7卷(第2期);第1-4页 * |
Also Published As
Publication number | Publication date |
---|---|
CN104951304A (zh) | 2015-09-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106845549B (zh) | 一种基于多任务学习的场景与目标识别的方法及装置 | |
Cheng et al. | BIRNAT: Bidirectional recurrent neural networks with adversarial training for video snapshot compressive imaging | |
CN104917666B (zh) | 一种制作个性化动态表情的方法和装置 | |
CN103649999B (zh) | 用于确定光流的内容自适应系统、方法和设备 | |
CN109729420A (zh) | 图片处理方法及装置、移动终端及计算机可读存储介质 | |
KR102461919B1 (ko) | 동적 깊이 이미지를 캡처 및 편집하는 기술 | |
CN111095353A (zh) | 实时跟踪补偿图像效果 | |
CN111126216A (zh) | 风险检测方法、装置及设备 | |
CN104079926B (zh) | 一种远程桌面软件的视频性能测试方法 | |
CN110443172A (zh) | 一种基于超分辨率和模型压缩的目标检测方法及系统 | |
CN105260487A (zh) | 图片的管理方法及图片的管理装置 | |
CN111695519B (zh) | 关键点定位方法、装置、设备以及存储介质 | |
CN111158924B (zh) | 内容分享方法、装置、电子设备及可读存储介质 | |
CN111310590B (zh) | 一种动作识别方法及电子设备 | |
Luo et al. | Cloud Chaser: real time deep learning computer vision on low computing power devices | |
WO2017010514A1 (ja) | 画像検索装置及び方法、撮影時刻推定装置及び方法、反復構造抽出装置及び方法、並びにプログラム | |
CN104113682A (zh) | 一种图像获取方法及电子设备 | |
CN110262529A (zh) | 一种基于卷积神经网络的无人机监控方法及系统 | |
CN104951304B (zh) | 面部表情捕获数据的转存与发送方法 | |
CN106373107A (zh) | 智能手机自动图像去模糊系统及方法 | |
CN112053323A (zh) | 单镜头多帧图像数据物体追踪标注方法和装置、存储介质 | |
CN115499577B (zh) | 一种图像处理方法及终端设备 | |
CN111739649A (zh) | 一种用户画像捕捉方法、装置及系统 | |
CN103714565A (zh) | 一种搭载音频的动态图像生成方法及系统 | |
CN111159450A (zh) | 图片分类方法、装置、计算机设备和存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20171226 |