void captureSingleFrame(int) { int num = findUniqueFileName(); XnChar csColorFileName[XN_FILE_MAX_PATH]; XnChar csDepthFileName[XN_FILE_MAX_PATH]; XnChar csIRFileName[XN_FILE_MAX_PATH]; getColorFileName(num, csColorFileName); getDepthFileName(num, csDepthFileName); getIRFileName(num, csIRFileName); openni::VideoFrameRef& colorFrame = getColorFrame(); if (colorFrame.isValid()) { xnOSSaveFile(csColorFileName, colorFrame.getData(), colorFrame.getDataSize()); } openni::VideoFrameRef& depthFrame = getDepthFrame(); if (depthFrame.isValid()) { xnOSSaveFile(csDepthFileName, depthFrame.getData(), depthFrame.getDataSize()); } openni::VideoFrameRef& irFrame = getIRFrame(); if (irFrame.isValid()) { xnOSSaveFile(csIRFileName, irFrame.getData(), irFrame.getDataSize()); } g_Capture.nCapturedFrameUniqueID = num + 1; displayMessage("Frames saved with ID %d", num); }
void captureSingleFrame(int) { int num = findUniqueFileName(); XnChar csImageFileName[XN_FILE_MAX_PATH]; XnChar csDepthFileName[XN_FILE_MAX_PATH]; XnChar csIRFileName[XN_FILE_MAX_PATH]; getImageFileName(num, csImageFileName); getDepthFileName(num, csDepthFileName); getIRFileName(num, csIRFileName); const ImageMetaData* pImageMD = getImageMetaData(); if (pImageMD != NULL) { xnOSSaveFile(csImageFileName, pImageMD->Data(), pImageMD->DataSize()); } const IRMetaData* pIRMD = getIRMetaData(); if (pIRMD != NULL) { xnOSSaveFile(csIRFileName, pIRMD->Data(), pIRMD->DataSize()); } const DepthMetaData* pDepthMD = getDepthMetaData(); if (pDepthMD != NULL) { xnOSSaveFile(csDepthFileName, pDepthMD->Data(), pDepthMD->DataSize()); } g_Capture.nCapturedFrameUniqueID = num + 1; // displayMessage("Frames saved with ID %d", num); printf("Frames saved with ID %d\n", num); }
int findUniqueFileName() { xnOSCreateDirectory(CAPTURED_FRAMES_DIR_NAME); int num = g_Capture.nCapturedFrameUniqueID; XnBool bExist = FALSE; XnStatus nRetVal = XN_STATUS_OK; XnChar csColorFileName[XN_FILE_MAX_PATH]; XnChar csDepthFileName[XN_FILE_MAX_PATH]; XnChar csIRFileName[XN_FILE_MAX_PATH]; for (;;) { // check color getColorFileName(num, csColorFileName); nRetVal = xnOSDoesFileExist(csColorFileName, &bExist); if (nRetVal != XN_STATUS_OK) break; if (!bExist) { // check depth getDepthFileName(num, csDepthFileName); nRetVal = xnOSDoesFileExist(csDepthFileName, &bExist); if (nRetVal != XN_STATUS_OK || !bExist) break; } if (!bExist) { // check IR getIRFileName(num, csIRFileName); nRetVal = xnOSDoesFileExist(csIRFileName, &bExist); if (nRetVal != XN_STATUS_OK || !bExist) break; } ++num; } return num; }