python实现批量Reconstruct、Lable以及fiterdata、solving、输出sovle骨骼脚本

编程入门 行业动态 更新时间:2024-10-25 21:27:54

python实现批量Reconstruct、Lable以及fiterdata、solving、输出sovle<a href=https://www.elefans.com/category/jswz/34/1744991.html style=骨骼脚本"/>

python实现批量Reconstruct、Lable以及fiterdata、solving、输出sovle骨骼脚本

在这里,我将介绍有关shogun post的一个python自动化脚本。

功能一:批量Reconstruct、Lable

功能二:批量fiterdata、solving、输出sovle骨骼

首先导入我们需要的库:ViconShogunPostSDK、os

import ViconShogunPostSDK
import os
import ViconShogunPostSDK.ViconShogunPost
shogun = ViconShogunPostSDK.ViconShogunPost()

定义一个存储的路径,如果不想设置为默认路径的话,可以通过input函数来进行输入路径,来进行自定义路径保存。
path = "D:/project_file/shougun/python/"

首先我们实现功能一:
定义一个函数:first_process

def first_process( name ) :if os.path.splitext(name)[1] == ".x2d": shogun.Scene.New()  #加载一个新场景shogun.Scene.Load( os_x2d_name ) #加载.x2d文件shogun.Offline.Reconstruct() shogun.Offline.AutoLabel() file_name_vdf = os.path.splitext(name)[0] #分离.x2d文件名file_name_vdf = dirs + file_name_vdf + ".vdf" shogun.Scene.Export(file_name_vdf)else:pass    

首先需要传入一个文件名,然后进行判断文件是否为.x2d文件,如果是,则在shogun post里新建一个场景,然后加载.x2d文件,接着执行Reconstruct、AutoLabel操作。接下来我们截取x2d的文件名,加上扩展名.vdf,最后输出保存vdf文件。
PS:在path目录下新建一个vdf的文件夹,python将输出的vdf文件保存在vdf文件夹中。至此,功能一实现。

其次定义第二个函数:Second_process

def Second_process( name ) :if os.path.splitext(name)[1] == ".vdf": shogun.Scene.New()  #加载一个新场景shogun.Scene.Load( os_vdf_name ) #加载.vdf文件shogun.Offline.Solve()file_name_fbx = os.path.splitext(name)[0]file_name_fbx = path_fbx + file_name_fbx + ".fbx"export_solvebone(file_name_fbx)        else:pass

在第二个函数中,同样需要传入一个文件名,然后判断文件是否为vdf格式的,因为我们处理过vdf文件夹中的数据后,将其保存后一定为vdf格式的文件,所以,遍历vdf文件夹中的vdf格式的文件。进行solve处理,然后分离文件名。添加.fbx扩展名,然后调用我们第三个函数export_solvebone输出结算后的骨骼。
接下来是我们的第三个函数export_solvebone:

def export_solvebone(path1):shogun.Scene.DeselectAllObjects()object1 = "SolvingBone"shogun.Scene.SelectObjectsOfType(object1)HSL_String =  "saveFile -s "  + '\"' + path1 + '\"' + ";"Result = shogun.HSL(HSL_String) 

在输出骨骼之前,我们将进行不选择所有的object,接着选择SolvingBone,在Vicon给出的SDK中Export有一个参数不太明确,所以需要以后继续研究,在这里我们采用在python中调用HSL脚本来进行输出,将HSL的命令传入shogun.HSL中,至此我们选择了SolvingBone,我们的目的是为了输出SolvingBone,所以需要在FileExport中设置仅输出我们选择的object
至此功能二完成

功能三:filter data
因为在处理数据的时候有些时候回忘记平滑,所以最好也将filter data加入自动化执行的脚本中。所以添加了第四个函数:filter data

def filter_data():shogun.Scene.DeselectAllObjects()object1 = "Marker"shogun.Scene.SelectObjectsOfType(object1)shogun.Timeline.SelectAll()Result = shogun.HSL('filter 0.300000 15.000000;')

首先我们选择对marker进行filter data,接着我们在Timeline上选择所有的帧。接着使用Result = shogun.HSL(‘filter 0.300000 15.000000;’)来进行数据平滑。

接下来我们需要定义一个创建文件夹的函数:create_dir
判断vdf、fbx文件是否存在,如果不存在就创建。

def create_dir(path_dir):if os.path.exists(path_dir):passelse:os.mkdir( path_dir ) 

最后我们来看一下主程序:

model = input("please input your process : 1 is reconstrust and labled, 2 is solving : ")dir_x2d = os.listdir(path)
print(dir_x2d)
dirs = path + "vdf/"
print(dirs)
create_dir(dirs)path_fbx = path + "fbx/"
print(path_fbx)
dir_vdf = os.listdir(dirs)
print(dir_vdf)
create_dir(path_fbx)if model == 1 :for file_name in dir_x2d:os_x2d_name = path + file_nameprint(os_x2d_name)first_process( file_name )if model == 2 :for file_name in dir_vdf: filter_data()os_vdf_name = dirs + file_nameSecond_process(file_name)     

开始的通过输入1和2进行模式选择,当然模式二实在模式一的正确运行的基础上才能运行的,

看!是不是很方便呢!
如您在使用过程中遇到问题或者发现错误请联系作者QQ:158416830

更多推荐

python实现批量Reconstruct、Lable以及fiterdata、solving、输出sovle骨骼脚本

本文发布于:2024-02-17 07:50:43,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1693241.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:骨骼   批量   脚本   Reconstruct   python

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!