最近做的东西需要将bvh数据处理成xyz坐标,在下面这篇文章找到了方法:
(57条消息) 人体动作捕捉格式BVH及其与三维坐标的转换_三维视频转bvh_零度蛋花粥的博客-CSDN博客
通过pip导入bvh-converter包,进行bvh数据转化,结果运行结果卡在Analyzing frames...,然后直接退出进程了,如图
![](https://i-blog.csdnimg.cn/blog_migrate/833d86d6a573bf121c47a4627e2a8903.png)
尝试更换要处理的bvh文件,重新安装bvh-converter包,结果都不行。
于是决定从导入的库入手,在导入的库中->main.py中找到了卡住的地方
![](https://i-blog.csdnimg.cn/blog_migrate/6f60731b7c2cc18b5cb6472e831b76eb.png)
于是定位到bvhplayer_skeleton.py的process_bvhkeyframe
![](https://i-blog.csdnimg.cn/blog_migrate/b11f439e08ac438965fadae86db9028a.png)
该函数中使用pdb模块的set_trace方法设置一个断点,然后在项目终端继续调用
bvh-converter <filename>
进行调试,发现在下图位置处,程序异常退出
![](https://i-blog.csdnimg.cn/blog_migrate/79e561302420afc4f265d5a1532b3b21.png)
dot是numpy库中计算矩阵乘法的方法,于是我单独写了一个文件用来测试dot方法
![](https://i-blog.csdnimg.cn/blog_migrate/5feff96c1a6d33286c6b82f47d0c83ac.png)
代码没有问题,然而报出了错误信息
Process finished with exit code -1066598274 (0xC06D007E)
经过查阅后,发现是numpy版本不匹配的原因,很多回答是在和matplotlib共用的时候发现的问题,而我目前的虚拟环境下并没有安装matplotlib包,于是我推测可能是numpy版本和python版本不匹配,于是更新了numpy,问题随之解决,bvh文件转化为csv文件也成功了,随后我又安装了matplotlib,依然没有出现问题。
我的python版本为3.9,对应的numpy和matplotlib版本如下
![](https://i-blog.csdnimg.cn/blog_migrate/deb1fc45db0373602c3d80e9191f3292.png)