bool ReadActivity::readNextFrameSkeleton(double **data, double **posData, int **dataCONF, int *dataPosCONF)
{
	string line;
	bool fileSkeletonEnded = true;

	if (! fileSkeleton) {
		errorMsg("Open skeleton file failed...\n");
	}

	if (getline(fileSkeleton, line)) {
		fileSkeletonEnded = false;

		stringstream lineStream(line);
		string element;

		int jointCount = 0;
		int jointDataCount = 0;

		int posJointCount = 0;
		int posJointDataCount = 0;

		parseChk(getline(lineStream, element, ','), true);
		currFrameNum = atoi((char *)element.c_str());

		if (element.compare("END") == 0) {
			fileSkeletonEnded = true;

			return false;
		}

		while (getline(lineStream, element, ',')) {
			double e = strtod((char *)element.c_str(), NULL);

			if (jointCount < JOINT_NUM) {
				data[jointCount][jointDataCount] = e;
				jointDataCount++;

				if (jointDataCount == JOINT_DATA_ORI_NUM) {
					parseChk(getline(lineStream, element, ','), true);    // parse conf value
					dataCONF[jointCount][0] = atoi((char *)element.c_str());
				}
				else if (jointDataCount >= JOINT_DATA_NUM) {
					parseChk(getline(lineStream, element, ','), true);
					dataCONF[jointCount][1] = atoi((char *)element.c_str());

					jointCount++;
					jointDataCount = 0;
				}
			}
			else {

				// pos only joints
				if (posJointCount >= POS_JOINT_NUM) {
					errorMsg("PARSING ERROR!!!");
				}

				posData[posJointCount][posJointDataCount] = e;
				posJointDataCount++;

				if (posJointDataCount >= POS_JOINT_DATA_NUM) {
					parseChk(getline(lineStream, element, ','), true);    // parse conf value
					dataPosCONF[posJointCount] = atoi((char *)element.c_str());

					posJointCount++;
					posJointDataCount = 0;
				}
			}
		}

		// check if there is more data in current frame...
		if (getline(lineStream, element, ',')) {
			errorMsg("more data exist in skeleton data...\n");
		}
	}

	if (currFrameNum < 0) {
		errorMsg("file does not exist or empty!!!");
	}

	return !fileSkeletonEnded;
}
Exemple #2
0
	date(string Date) {
		parseChk(Date);}