恶心的3DMAD数据集

2023-10-31 10:31
文章标签 数据 恶心 3dmad

本文主要是介绍恶心的3DMAD数据集,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

本来是申请到了数据集,也花钱下载下来了,身边没有linux、Mac os系统,不想转换想找人花钱买得了,私信多家大神均无建树,凑巧别的实验室的苹果一体机遗留在宿舍,实在喜出望外、感激涕零。抱着大mac放回宿舍,开启恶心的3DMAD之旅。

先说一下:共三个session文件夹,session01,session02,session03,只有session03是面具的假人。每个session里面有85个hdf5文件,17个人的5种变化,转换后变成两个avi文件,每个文件就是170个视频共170x3=510个视频,每秒30帧。
在这里插入图片描述

不会使用mac系统啊,各种不适应,不说了
1.第一步还是下载好miniconda吧,安装说明说4.4以上,我下的是这个版本。放到用户文件下就行。在这里插入图片描述
2.安装miniconda
我是参考了这两篇文章
这篇教怎么添加环境变量
vim 是创建并打开一个文件 按i进入编辑模式,编辑好后按esc退出到命令模式,在最下方输入:wq 保存并退出才实现文件的更改
之后关闭终端再重启发现conda -V 就能执行了;
这一篇比较详细
并按他的方法更改了下载路径,编辑模式也是刚刚那样按i进入编辑模式
3.配置bob环境
这一步就是要参考官网给的安装方法了
按官网给出的第二步骤就是检查是否是可以使用conda命令,和版本要求,这一步可以不执行,前面按要求下载了miniconda4.4以上和可以使用conda命令即可
在这里插入图片描述
接下来第三步是创建bob环境并下载相应的包
这里不建议完全按这个命令执行,因为我这样试了之后发现要安装很多包,中间还容易因为网络不好导致都没装上,连bob环境也没创建
在这里建议分步骤进行。
在这里插入图片描述
(1)可以先创建一个python3的bob环境

conda create -n bob python=3.6 -y

(2)然后我按这个第四步添加了下载路径
在这里插入图片描述
(3)到了下载相应的包了
这边参考这篇文章
不看官网说明了,直接按这篇文章下载相应的安装包分别是

conda install bob.extension bob.blitz bob.core bob.io.base bob.io.image

安装上面这条命令时没有出现较难下载的文件,一切正常
但安装下面这条指令时,安装bob.io.video文件时里面需要ffmpeg文件,下载了好几次往往都在99%出错,实在没办法只能离线安装
离线安装参考这篇文章

conda install bob.ip.draw bob.io.video

这是所有bob包涉及的下载文件地址,里面找到ffmpeg文件
下载需要的是.conda的22m文件。(如果网络正常下载顺利这条步骤可以忽略)
在这里插入图片描述
将下载好的.conda ffmpeg文件放置在miniconda3/pkgs 目录下
在这里插入图片描述
文件夹是后面重新下载生成的,之后需要把这个文件的下载路径添加到pkgs目录下的urls.txt文本下,下载路径在网络出错的时候会提示
在这里插入图片描述
在这里插入图片描述
我这边的是这种情况
在这里插入图片描述
当这一切弄好后,再回到这一步,可以分开安装更安全
再次执行下面这个video命令,发现仍然没有跳过这个安装包,依然很慢的下载,但是最后居然成功了,而且这个video包就只需要这个ffmpeg文件就好了,完成之后,执行下面的draw包就可以完成代码需要的安装包了。

conda install bob.io.video
conda install bob.ip.draw

4.修改raw_to_AVI.py文件的代码
完整代码如下

#!/usr/bin/env python
import os, sys
import numpy
#import bob
import bob.io.base
import bob.ip.draw
import bob.io.videoimport argparseparser = argparse.ArgumentParser(description='Convert HDF5 files to videos for visualization purposes.')
parser.add_argument('path', metavar='path', type=str, help='path to the HDF5 file to be converted')
parser.add_argument('-e', '--eyes', action='store_true', help='mark eye positions in the RGB video')
args = parser.parse_args(sys.argv[1:])try:f = bob.io.base.HDF5File(args.path)Depth = f.read('Depth_Data')Color = f.read('Color_Data')if args.eyes:pos = f.read('Eye_Pos')for i in range(0,Color.shape[0]):bob.ip.draw.cross(Color[i,:,:,:], int(pos[i,0]), int(pos[i,1]), 10, (255,0,0))bob.ip.draw.cross(Color[i,:,:,:], int(pos[i,2]), int(pos[i,3]), 10, (255,0,0))head, tail = os.path.split(args.path)depth_file = head+'/'+tail.split('.')[0]+'_D.avi'color_file = head+'/'+tail.split('.')[0]+'_C.avi'depth_video = bob.io.video.writer(depth_file, Color.shape[-2], Color.shape[-1], 30)color_video = bob.io.video.writer(color_file, Color.shape[-2], Color.shape[-1], 30)D = numpy.right_shift(Depth,3).astype(numpy.uint8)depth_video.append(numpy.concatenate((D,D,D),1))depth_video.close()if Color.shape[1]<3:color_video.append(numpy.concatenate((Color,Color,Color),1))else:color_video.append(Color)color_video.close()print ("Depth video is saved in %s." %depth_file)print ("Color video is saved in %s." %color_file)del f
except IOError:print ("The given file cannot be read.")

5.在bob环境下执行命令即可
命令:python raw_to_AVI.py的路径 需要转换视频的原路径
最后与原视频.hdf5文件保存在一起,得到两个avi文件,一次成功,但我这边85x3共255个文件,要执行255次
看到可以全部转换的教程,看着不清楚不想去弄了,希望以后有人具体点弄了告诉我。

(bob) lch-iMac:3dmad1 lch$ python /Users/lch/lc/3dmad1/documentation/raw_to_AVI.py /Users/lch/lc/3dmad1/session01/01_01_01.hdf5

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

拜拜了您嘞3dmad

这篇关于恶心的3DMAD数据集的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/314723

相关文章

Java中注解与元数据示例详解

《Java中注解与元数据示例详解》Java注解和元数据是编程中重要的概念,用于描述程序元素的属性和用途,:本文主要介绍Java中注解与元数据的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参... 目录一、引言二、元数据的概念2.1 定义2.2 作用三、Java 注解的基础3.1 注解的定义3.2 内

将sqlserver数据迁移到mysql的详细步骤记录

《将sqlserver数据迁移到mysql的详细步骤记录》:本文主要介绍将SQLServer数据迁移到MySQL的步骤,包括导出数据、转换数据格式和导入数据,通过示例和工具说明,帮助大家顺利完成... 目录前言一、导出SQL Server 数据二、转换数据格式为mysql兼容格式三、导入数据到MySQL数据

C++中使用vector存储并遍历数据的基本步骤

《C++中使用vector存储并遍历数据的基本步骤》C++标准模板库(STL)提供了多种容器类型,包括顺序容器、关联容器、无序关联容器和容器适配器,每种容器都有其特定的用途和特性,:本文主要介绍C... 目录(1)容器及简要描述‌php顺序容器‌‌关联容器‌‌无序关联容器‌(基于哈希表):‌容器适配器‌:(

C#提取PDF表单数据的实现流程

《C#提取PDF表单数据的实现流程》PDF表单是一种常见的数据收集工具,广泛应用于调查问卷、业务合同等场景,凭借出色的跨平台兼容性和标准化特点,PDF表单在各行各业中得到了广泛应用,本文将探讨如何使用... 目录引言使用工具C# 提取多个PDF表单域的数据C# 提取特定PDF表单域的数据引言PDF表单是一

一文详解Python中数据清洗与处理的常用方法

《一文详解Python中数据清洗与处理的常用方法》在数据处理与分析过程中,缺失值、重复值、异常值等问题是常见的挑战,本文总结了多种数据清洗与处理方法,文中的示例代码简洁易懂,有需要的小伙伴可以参考下... 目录缺失值处理重复值处理异常值处理数据类型转换文本清洗数据分组统计数据分箱数据标准化在数据处理与分析过

大数据小内存排序问题如何巧妙解决

《大数据小内存排序问题如何巧妙解决》文章介绍了大数据小内存排序的三种方法:数据库排序、分治法和位图法,数据库排序简单但速度慢,对设备要求高;分治法高效但实现复杂;位图法可读性差,但存储空间受限... 目录三种方法:方法概要数据库排序(http://www.chinasem.cn对数据库设备要求较高)分治法(常

Python将大量遥感数据的值缩放指定倍数的方法(推荐)

《Python将大量遥感数据的值缩放指定倍数的方法(推荐)》本文介绍基于Python中的gdal模块,批量读取大量多波段遥感影像文件,分别对各波段数据加以数值处理,并将所得处理后数据保存为新的遥感影像... 本文介绍基于python中的gdal模块,批量读取大量多波段遥感影像文件,分别对各波段数据加以数值处

使用MongoDB进行数据存储的操作流程

《使用MongoDB进行数据存储的操作流程》在现代应用开发中,数据存储是一个至关重要的部分,随着数据量的增大和复杂性的增加,传统的关系型数据库有时难以应对高并发和大数据量的处理需求,MongoDB作为... 目录什么是MongoDB?MongoDB的优势使用MongoDB进行数据存储1. 安装MongoDB

Python MySQL如何通过Binlog获取变更记录恢复数据

《PythonMySQL如何通过Binlog获取变更记录恢复数据》本文介绍了如何使用Python和pymysqlreplication库通过MySQL的二进制日志(Binlog)获取数据库的变更记录... 目录python mysql通过Binlog获取变更记录恢复数据1.安装pymysqlreplicat

Linux使用dd命令来复制和转换数据的操作方法

《Linux使用dd命令来复制和转换数据的操作方法》Linux中的dd命令是一个功能强大的数据复制和转换实用程序,它以较低级别运行,通常用于创建可启动的USB驱动器、克隆磁盘和生成随机数据等任务,本文... 目录简介功能和能力语法常用选项示例用法基础用法创建可启动www.chinasem.cn的 USB 驱动