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; }
date(string Date) { parseChk(Date);}