ITOP是斯坦福大学开源的人体关节检测数据集,包含RGB图、深度图和点云,下载链接如下:
https://www.alberthaque.com/projects/viewpoint_3d_pose/
关于读取HDF5文件所需库的下载安装可以参考这篇文章:
https://blog.csdn.net/ys578676728/article/details/104732140
1. ReadHDF5
我写了一个class用来读取ITOP数据集中的各种格式文件,直接上代码:
read_hdf5.h
#ifndef READ_HDF5_H
#define READ_HDF5_H
#include <iostream>
#include <vector>
#include "H5Cpp.h"
#include "params.h"
using namespace H5;
using namespace std;
const int BATCH = 1; // how many frames of data
class ReadHDF5
{
public:
ReadHDF5(H5File, H5File, int);
~ReadHDF5();
int readValidIndex(); // return num of valid data
void readDepthMap(vector<vector<float>>&, int);
void read2DCoord(vector<vector<int>>&, int);
void read3DCoord(vector<vector<float>>&, int);
int *is_valid_;
int num_;
private:
DataSet dataset1_0_; // depth_maps
DataSet dataset2_0_; // is_valid
DataSet dataset2_1_; // image_coordinates (2D)
DataSet dataset2_2_; // real_world_coordinates (3D)
};
#endif
params.h (相关参数)
#ifndef PARAMS_H
#define PARAMS_H
const int HEIGHT = 240;
const int WIDTH = 320;
const int NJOINTS = 15;
#endif
read_hdf5.cpp
构造参数n:全部图片/坐标的数量(39795 for side training data)
函数形参idx: 从第idx个图片/坐标开始读取
全局变量BATCH: 一次读取BATCH个图片、坐标
#include "include/read_hdf5.h"
ReadHDF5::ReadHDF5(H5File file_1, H5File file_2, int n) {
dataset1_0_ = file_1.openDataSet("data");
dataset2_0_ = file_2.openDataSet("is_valid");
dataset2_1_ = file_2.openDataSet("image_coordinates");
dataset2_2_ = file_2.openDataSet("real_world_coordinates");
num_ = n