void Frame::average_frames(const std::vector<Frame> frames, Frame &sub_frame){ // iterate over a number of frames // do the averaging and rounding // return single frame // single thread at first // tmp write through int size = frames.size(); std::valarray<double> tmp(IMAGE::FRAME_SIZE); std::valarray<uint16_t> frame_data(IMAGE::FRAME_SIZE); // alternative impl using valarray for(int f=0;f<size;f++) sub_frame.frame_data_d += frames[f].frame_data_d; }
void load_packaged_file(std::string filename, BodyPartDefinitionVector& bpdv, std::vector<FrameDataProcessed>& frame_datas, BodypartFrameCluster& bodypart_frame_cluster, std::vector<std::vector<float>>& triangle_vertices, std::vector<std::vector<unsigned int>>& triangle_indices, std::vector<VoxelMatrix>& voxels, float& voxel_size){ cv::FileStorage savefile; savefile.open(filename, cv::FileStorage::READ); cv::FileNode bpdNode = savefile["bodypartdefinitions"]; bpdv.clear(); for (auto it = bpdNode.begin(); it != bpdNode.end(); ++it) { BodyPartDefinition bpd; read(*it, bpd); bpdv.push_back(bpd); } cv::FileNode frameNode = savefile["frame_datas"]; frame_datas.clear(); for (auto it = frameNode.begin(); it != frameNode.end(); ++it){ cv::Mat camera_pose, camera_matrix; SkeletonNodeHard root; int facing; (*it)["camera_extrinsic"] >> camera_pose; (*it)["camera_intrinsic_mat"] >> camera_matrix; (*it)["skeleton"] >> root; (*it)["facing"] >> facing; FrameDataProcessed frame_data(bpdv.size(), 0, 0, camera_matrix, camera_pose, root); frame_data.mnFacing = facing; frame_datas.push_back(frame_data); } cv::FileNode clusterNode = savefile["bodypart_frame_cluster"]; bodypart_frame_cluster.clear(); bodypart_frame_cluster.resize(bpdv.size()); for (auto it = clusterNode.begin(); it != clusterNode.end(); ++it){ int bodypart; (*it)["bodypart"] >> bodypart; cv::FileNode clusterClusterNode = (*it)["clusters"]; for (auto it2 = clusterClusterNode.begin(); it2 != clusterClusterNode.end(); ++it2){ int main_frame; (*it2)["main_frame"] >> main_frame; std::vector<int> cluster; cluster.push_back(main_frame); bodypart_frame_cluster[bodypart].push_back(cluster); CroppedMat image; if ((*it2)["image"].empty()){ std::string image_path; (*it2)["image_path"] >> image_path; image.mMat = cv::imread(image_path); (*it2)["image_offset"] >> image.mOffset; (*it2)["image_size"] >> image.mSize; } else{ (*it2)["image"] >> image; } frame_datas[main_frame].mBodyPartImages.resize(bpdv.size()); frame_datas[main_frame].mBodyPartImages[bodypart] = image; }