int MediaSession::RecorderRecord(int recorderId,const char* filename) { //Get recorder Recorders::iterator it = recorders.find(recorderId); //If not found if (it==recorders.end()) //Exit return Error("Recorder not found\n"); //Get it Recorder* recorder = it->second; //create recording if (!recorder->Create(filename)) //Error return Error("-Could not create file"); //Start recording return recorder->Record(); }
void OperatorControl(void) { GetWatchdog().SetEnabled(true); printf("Entered OperatorControl\n"); while (IsOperatorControl()) { GetWatchdog().Feed(); // use the trigger to start recording.. at the moment, // it just gets ignored if you call it more than once if (stick.GetTrigger()) recorder.StartRecording(); myRobot.ArcadeDrive(stick); // drive with arcade style (use right stick) // always call the recording routine recorder.Record(); } }
//---------------------------------------------------- // レコーダーの設定 //---------------------------------------------------- XnStatus setRecorder(Recorder recorder, XnStatus rc){ //XnStatus rc; // レコーダーの作成 rc = recorder.Create(g_context); if (rc != XN_STATUS_OK) { cout << "error!" << endl; throw std::runtime_error(xnGetStatusString(rc)); } // 記録設定 rc = recorder.SetDestination(XN_RECORD_MEDIUM_FILE, OUT_RECORDE_PATH); if (rc != XN_STATUS_OK) { cout << "error!" << endl; throw std::runtime_error(xnGetStatusString(rc)); } // イメージを記録対象に追加 rc = recorder.AddNodeToRecording(g_image, XN_CODEC_JPEG); if (rc != XN_STATUS_OK) { cout << "error!" << endl; throw std::runtime_error(xnGetStatusString(rc)); } // デプスを記録対象に追加 rc = recorder.AddNodeToRecording(g_depth, XN_CODEC_UNCOMPRESSED); if (rc != XN_STATUS_OK) { cout << "error!" << endl; std::cout << __LINE__ << std::endl; throw std::runtime_error(xnGetStatusString(rc)); } // 記録開始(WaitOneUpdateAllのタイミングで記録される) rc = recorder.Record(); if (rc != XN_STATUS_OK) { cout << "error!" << endl; throw std::runtime_error(xnGetStatusString(rc)); } cout << "record set ok!" << endl; return rc; }
int main(int argc, char* argv[]) { XnStatus nRetVal = XN_STATUS_OK; nRetVal = xnLogInitFromXmlFile(SAMPLE_XML_PATH); if (nRetVal != XN_STATUS_OK) { printf("Log couldn't be opened: %s. Running without log", xnGetStatusString(nRetVal)); } if (argc < 3) { printf("usage: %s <inputFile> <outputFile>\n", argv[0]); return -1; } const char* strInputFile = argv[1]; const char* strOutputFile = argv[2]; Context context; nRetVal = context.Init(); CHECK_RC(nRetVal, "Init"); // open input file Player player; nRetVal = context.OpenFileRecording(strInputFile, player); CHECK_RC(nRetVal, "Open input file"); // Get depth node from recording DepthGenerator depth; nRetVal = context.FindExistingNode(XN_NODE_TYPE_DEPTH, depth); CHECK_RC(nRetVal, "Find depth generator"); // Create mock node based on depth node from recording MockDepthGenerator mockDepth; nRetVal = mockDepth.CreateBasedOn(depth); CHECK_RC(nRetVal, "Create mock depth node"); // create recorder Recorder recorder; nRetVal = recorder.Create(context); CHECK_RC(nRetVal, "Create recorder"); nRetVal = recorder.SetDestination(XN_RECORD_MEDIUM_FILE, strOutputFile); CHECK_RC(nRetVal, "Set recorder destination file"); // add depth node to recorder nRetVal = recorder.AddNodeToRecording(mockDepth); CHECK_RC(nRetVal, "Add node to recording"); nRetVal = player.SetRepeat(FALSE); XN_IS_STATUS_OK(nRetVal); XnUInt32 nNumFrames = 0; nRetVal = player.GetNumFrames(depth.GetName(), nNumFrames); CHECK_RC(nRetVal, "Get player number of frames"); DepthMetaData depthMD; while ((nRetVal = depth.WaitAndUpdateData()) != XN_STATUS_EOF) { CHECK_RC(nRetVal, "Read next frame"); // Get depth meta data depth.GetMetaData(depthMD); //-----------------------------------------------// // Transform depth! This is the interesting part // //-----------------------------------------------// /* Enable the depth data to be modified. This is done implicitly by depthMD.WritableDepthMap(), but we're calling it just to be clear. */ nRetVal = depthMD.MakeDataWritable(); CHECK_RC(nRetVal, "Make depth data writable"); transformDepthMD(depthMD); // Pass the transformed data to the mock depth generator nRetVal = mockDepth.SetData(depthMD); CHECK_RC(nRetVal, "Set mock node new data"); /* We need to call recorder.Record explicitly because we're not using WaitAndUpdateAll(). */ nRetVal = recorder.Record(); CHECK_RC(nRetVal, "Record"); printf("Recorded: frame %u out of %u\r", depthMD.FrameID(), nNumFrames); } printf("\n"); return 0; }
int main() { XnStatus nRetVal = XN_STATUS_OK; nRetVal = xnLogInitFromXmlFile(SAMPLE_XML_PATH); if (nRetVal != XN_STATUS_OK) { printf("Log couldn't be opened: %s. Running without log", xnGetStatusString(nRetVal)); } Context context; nRetVal = context.Init(); CHECK_RC(nRetVal, "Init"); // create recorder Recorder recorder; nRetVal = recorder.Create(context); CHECK_RC(nRetVal, "Create recorder"); nRetVal = recorder.SetDestination(XN_RECORD_MEDIUM_FILE, RECORDING_FILE_NAME); CHECK_RC(nRetVal, "Set recorder destination file"); // Create mock raw node MockRawGenerator rawGenerator; nRetVal = rawGenerator.Create(context, "MockRaw"); CHECK_RC(nRetVal, "Create mock raw generator"); nRetVal = rawGenerator.SetStringProperty("Type", "ReverseT"); CHECK_RC(nRetVal, "Set property"); nRetVal = rawGenerator.SetIntProperty("X", 5); CHECK_RC(nRetVal, "Set property"); nRetVal = recorder.AddNodeToRecording(rawGenerator); CHECK_RC(nRetVal, "Add node to recording"); //Now we set one property after adding to recording nRetVal = rawGenerator.SetIntProperty("Y", 8); CHECK_RC(nRetVal, "Set property"); XnChar buff[20]; for (XnUInt32 i = 1; i <= 10; i++) { for (XnUInt32 j = 0; j < 20; j++) { buff[j] = (XnChar)i; } printf("Recording frame %d/10...\r", i); nRetVal = rawGenerator.SetData(1000 * i, i, sizeof(buff), buff); CHECK_RC(nRetVal, "Set raw node new data"); nRetVal = recorder.Record(); CHECK_RC(nRetVal, "Record"); } nRetVal = recorder.RemoveNodeFromRecording(rawGenerator); CHECK_RC(nRetVal, "Remove node from recording"); recorder.Release(); printf("\nDone recording.\n"); rawGenerator.Release(); Player player; nRetVal = context.OpenFileRecording(RECORDING_FILE_NAME, player); CHECK_RC(nRetVal, "Open file recording"); nRetVal = player.SetRepeat(FALSE); CHECK_RC(nRetVal, "Turn repeat off"); nRetVal = context.GetProductionNodeByName("MockRaw", rawGenerator); CHECK_RC(nRetVal, "Get raw node by name"); const XnChar* pData = NULL; XnUInt32 nSize = 0; printf("Reading Data:\n"); while ((nRetVal = context.WaitAnyUpdateAll()) != XN_STATUS_EOF) { CHECK_RC(nRetVal, "Read data from file"); pData = (const XnChar*)rawGenerator.GetData(); nSize = rawGenerator.GetDataSize(); for (XnUInt32 i = 0; i < nSize; i++) { printf("%d ", pData[i]); } printf("\n"); } player.Release(); rawGenerator.Release(); recorder.Release(); context.Release(); return 0; }
int main(int argc, char* argv[]) { XnStatus nRetVal = XN_STATUS_OK; nRetVal = xnLogInitFromXmlFile(SAMPLE_XML_PATH); if (nRetVal != XN_STATUS_OK) { printf("Log couldn't be opened: %s. Running without log", xnGetStatusString(nRetVal)); } if (argc < 3) { printf("usage: %s <inputFile> <outputFile>\n", argv[0]); return -1; } const char* strInputFile = argv[1]; const char* strOutputFile = argv[2]; Context context; nRetVal = context.Init(); CHECK_RC(nRetVal, "Init"); // open input file Player player; nRetVal = context.OpenFileRecording("/media/6B58CB581C0AACF6/7.oni", player); CHECK_RC(nRetVal, "Open input file"); // Get depth node from recording DepthGenerator depth; nRetVal = context.FindExistingNode(XN_NODE_TYPE_DEPTH, depth); CHECK_RC(nRetVal, "Find depth generator"); // Create mock node based on depth node from recording MockDepthGenerator mockDepth; nRetVal = mockDepth.CreateBasedOn(depth); CHECK_RC(nRetVal, "Create mock depth node"); ImageGenerator image; nRetVal = context.FindExistingNode(XN_NODE_TYPE_IMAGE, image); CHECK_RC(nRetVal, "Find depth generator"); // Create mock node based on depth node from recording MockImageGenerator mockImage; nRetVal = mockImage.CreateBasedOn(image); CHECK_RC(nRetVal, "Create mock depth node"); // create recorder Recorder recorder; nRetVal = recorder.Create(context); CHECK_RC(nRetVal, "Create recorder"); nRetVal = recorder.SetDestination(XN_RECORD_MEDIUM_FILE, "/home/shaghayegh/up.oni"); CHECK_RC(nRetVal, "Set recorder destination file"); // add depth node to recorder nRetVal = recorder.AddNodeToRecording(mockDepth); CHECK_RC(nRetVal, "Add node to recording"); // nRetVal = recorder.AddNodeToRecording(mockImage); // CHECK_RC(nRetVal, "Add node to recording"); nRetVal = player.SetRepeat(FALSE); XN_IS_STATUS_OK(nRetVal); XnUInt32 nNumFrames = 0; nRetVal = player.GetNumFrames(depth.GetName(), nNumFrames); CHECK_RC(nRetVal, "Get player number of frames"); DepthMetaData depthMD; ImageMetaData imageMD; int frameNum = 0; String path = "/media/6B58CB581C0AACF6/ebook/Articles/activity_recognition/data1/0512164529/"; while ((nRetVal = depth.WaitAndUpdateData()) != XN_STATUS_EOF) { ++frameNum; CHECK_RC(nRetVal, "Read next frame"); // Get depth meta data depth.GetMetaData(depthMD); image.GetMetaData(imageMD); //-----------------------------------------------// // Transform depth! This is the interesting part // //-----------------------------------------------// /* Enable the depth data to be modified. This is done implicitly by depthMD.WritableDepthMap(), but we're calling it just to be clear. */ nRetVal = depthMD.MakeDataWritable(); CHECK_RC(nRetVal, "Make depth data writable"); // nRetVal = imageMD.MakeDataWritable(); // CHECK_RC(nRetVal, "Make depth data writable"); String ficheroActualRGB; // ficheroActualRGB = path +"RGB_" + boost::to_string(frameNum) + ".png"; String ficheroActualDepth = path +"Depth_"+ boost::to_string(frameNum) + ".png"; // Mat matFrameImage = imread(ficheroActualRGB, 1); // resize(matFrameImage, matFrameImage, Size(640, 480), 0, 0, INTER_CUBIC); Mat matFrameDepth = imread(ficheroActualDepth,1); resize(matFrameDepth, matFrameDepth, Size(480, 640), 0, 0, INTER_CUBIC); transformDepthMD(matFrameDepth,depthMD); // transformImageMD(matFrameImage,imageMD); // Pass the transformed data to the mock depth generator nRetVal = mockDepth.SetData(depthMD); CHECK_RC(nRetVal, "Set mock node new data"); // nRetVal = mockImage.SetData(imageMD); // CHECK_RC(nRetVal, "Set mock node new data"); /* We need to call recorder.Record explicitly because we're not using WaitAndUpdateAll(). */ nRetVal = recorder.Record(); CHECK_RC(nRetVal, "Record"); printf("Recorded: frame %u out of %u\r", depthMD.FrameID(), nNumFrames); } printf("\n"); return 0; }