Exemplo n.º 1
0
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;


}
Exemplo n.º 2
0
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;
		}