From 3e700c41f52fd119552cbfd9771e73f0f2eb3411 Mon Sep 17 00:00:00 2001 From: Gabor Papp Date: Wed, 4 Feb 2015 21:31:43 +0100 Subject: [PATCH 1/6] added ptable dumping to CpuDepthPackeProcessor --- examples/protonect/Protonect.cpp | 4 +++- .../src/cpu_depth_packet_processor.cpp | 20 +++++++++++++++++++ 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/examples/protonect/Protonect.cpp b/examples/protonect/Protonect.cpp index baac87cd5..2b7dd96d6 100644 --- a/examples/protonect/Protonect.cpp +++ b/examples/protonect/Protonect.cpp @@ -33,6 +33,7 @@ #include #include #include +#include bool protonect_shutdown = false; @@ -55,7 +56,8 @@ int main(int argc, char *argv[]) libfreenect2::Freenect2 freenect2; - libfreenect2::Freenect2Device *dev = freenect2.openDefaultDevice(); + //libfreenect2::Freenect2Device *dev = freenect2.openDefaultDevice(); + libfreenect2::Freenect2Device *dev = freenect2.openDefaultDevice(new libfreenect2::CpuPacketPipeline()); if(dev == 0) { diff --git a/examples/protonect/src/cpu_depth_packet_processor.cpp b/examples/protonect/src/cpu_depth_packet_processor.cpp index 269d39811..98a9c02ee 100644 --- a/examples/protonect/src/cpu_depth_packet_processor.cpp +++ b/examples/protonect/src/cpu_depth_packet_processor.cpp @@ -81,6 +81,7 @@ class CpuDepthPacketProcessorImpl Frame *ir_frame, *depth_frame; bool flip_ptables; + bool save_ptables; CpuDepthPacketProcessorImpl() { @@ -95,6 +96,7 @@ class CpuDepthPacketProcessorImpl enable_edge_filter = true; flip_ptables = true; + save_ptables = true; } void startTiming() @@ -632,6 +634,24 @@ void CpuDepthPacketProcessor::loadP0TablesFromCommandResponse(unsigned char* buf return; } + if(impl_->save_ptables) + { + cv::Mat(424, 512, CV_16UC1, p0table->p0table0).copyTo(impl_->p0_table0); + cv::Mat(424, 512, CV_16UC1, p0table->p0table1).copyTo(impl_->p0_table1); + cv::Mat(424, 512, CV_16UC1, p0table->p0table2).copyTo(impl_->p0_table2); + std::ofstream p00out("p00.bin", std::ios::out | std::ios::binary); + p00out.write(reinterpret_cast(impl_->p0_table0.data), impl_->p0_table0.total() * impl_->p0_table0.elemSize()); + p00out.close(); + + std::ofstream p01out("p01.bin", std::ios::out | std::ios::binary); + p01out.write(reinterpret_cast(impl_->p0_table1.data), impl_->p0_table1.total() * impl_->p0_table1.elemSize()); + p01out.close(); + + std::ofstream p02out("p02.bin", std::ios::out | std::ios::binary); + p02out.write(reinterpret_cast(impl_->p0_table2.data), impl_->p0_table2.total() * impl_->p0_table2.elemSize()); + p02out.close(); + } + if(impl_->flip_ptables) { cv::flip(cv::Mat(424, 512, CV_16UC1, p0table->p0table0), impl_->p0_table0, 0); From a7d530484446e0d3cbe6c5f2bd03b94aec15a561 Mon Sep 17 00:00:00 2001 From: Gabor Papp Date: Thu, 5 Feb 2015 11:19:38 +0100 Subject: [PATCH 2/6] one frame raw ir export from CpuDepthPacketProcessor --- examples/protonect/src/cpu_depth_packet_processor.cpp | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/examples/protonect/src/cpu_depth_packet_processor.cpp b/examples/protonect/src/cpu_depth_packet_processor.cpp index 98a9c02ee..5d347abc8 100644 --- a/examples/protonect/src/cpu_depth_packet_processor.cpp +++ b/examples/protonect/src/cpu_depth_packet_processor.cpp @@ -757,8 +757,19 @@ void CpuDepthPacketProcessor::load11To16LutFromFile(const char* filename) void CpuDepthPacketProcessor::process(const DepthPacket &packet) { + static bool rawir_exported = false; + if(listener_ == 0) return; + if(!rawir_exported && (packet.sequence > 100)) + { + std::cerr << "[CpuDepthPacketProcessor::process] Exporting depth packet " << packet.sequence << std::endl; + std::ofstream rawIrOut("rawir.bin", std::ios::out | std::ios::binary); + rawIrOut.write(reinterpret_cast(packet.buffer), packet.buffer_length); + rawIrOut.close(); + rawir_exported = true; + } + impl_->startTiming(); cv::Mat m = cv::Mat::zeros(424, 512, CV_32FC(9)), m_filtered = cv::Mat::zeros(424, 512, CV_32FC(9)), m_max_edge_test = cv::Mat::ones(424, 512, CV_8UC1); From a31f8c3242ec437f975b50a6cfdb1325e6ed46fc Mon Sep 17 00:00:00 2001 From: Gabor Papp Date: Mon, 8 Dec 2014 20:10:07 +0100 Subject: [PATCH 3/6] test_opengl OSX fix --- examples/protonect/src/test_opengl_depth_packet_processor.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/examples/protonect/src/test_opengl_depth_packet_processor.cpp b/examples/protonect/src/test_opengl_depth_packet_processor.cpp index 7c91d3fd7..479b369ad 100644 --- a/examples/protonect/src/test_opengl_depth_packet_processor.cpp +++ b/examples/protonect/src/test_opengl_depth_packet_processor.cpp @@ -58,6 +58,9 @@ int main(int argc, char **argv) { glfwInit(); glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3); glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3); +#ifdef __APPLE__ + glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE); +#endif glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE); glfwWindowHint(GLFW_RESIZABLE, GL_FALSE); From ce896a8f902bf387000e56bd591417506537e78a Mon Sep 17 00:00:00 2001 From: Gabor Papp Date: Thu, 5 Feb 2015 11:37:45 +0100 Subject: [PATCH 4/6] modified test_opengl hardcoded bin paths --- .../protonect/src/test_opengl_depth_packet_processor.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/examples/protonect/src/test_opengl_depth_packet_processor.cpp b/examples/protonect/src/test_opengl_depth_packet_processor.cpp index 479b369ad..51ce61a9f 100644 --- a/examples/protonect/src/test_opengl_depth_packet_processor.cpp +++ b/examples/protonect/src/test_opengl_depth_packet_processor.cpp @@ -77,7 +77,7 @@ int main(int argc, char **argv) { libfreenect2::OpenGLDepthPacketProcessor processor(window, true); processor.setConfiguration(cfg); processor.setFrameListener(&fl); - processor.loadP0TablesFromFiles((binpath + "../p00.bin").c_str(), (binpath + "../p01.bin").c_str(), (binpath + "../p02.bin").c_str()); + processor.loadP0TablesFromFiles((binpath + "p00.bin").c_str(), (binpath + "p01.bin").c_str(), (binpath + "p02.bin").c_str()); processor.load11To16LutFromFile(""); processor.loadXTableFromFile(""); processor.loadZTableFromFile(""); @@ -85,7 +85,7 @@ int main(int argc, char **argv) { libfreenect2::CpuDepthPacketProcessor ref_processor; ref_processor.setConfiguration(cfg); ref_processor.setFrameListener(&fl); - ref_processor.loadP0TablesFromFiles((binpath + "../p00.bin").c_str(), (binpath + "../p01.bin").c_str(), (binpath + "../p02.bin").c_str()); + ref_processor.loadP0TablesFromFiles((binpath + "p00.bin").c_str(), (binpath + "p01.bin").c_str(), (binpath + "p02.bin").c_str()); ref_processor.load11To16LutFromFile(""); ref_processor.loadXTableFromFile(""); ref_processor.loadZTableFromFile(""); @@ -96,7 +96,7 @@ int main(int argc, char **argv) { p.buffer_length = 352*424*10*2; p.buffer = new unsigned char[p.buffer_length]; - loadBufferFromFile(binpath + "../rawir/rawir_4599.bin", p.buffer, p.buffer_length); + loadBufferFromFile(binpath + "rawir.bin", p.buffer, p.buffer_length); libfreenect2::Frame *ir, *depth; cv::Mat cpu_ir, cpu_depth, ogl_ir, ogl_depth; From 379206f7132066d0d3150ae66fefea78acd07d0b Mon Sep 17 00:00:00 2001 From: Gabor Papp Date: Thu, 5 Feb 2015 11:39:46 +0100 Subject: [PATCH 5/6] readded test_opengl to cmake --- examples/protonect/CMakeLists.txt | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/examples/protonect/CMakeLists.txt b/examples/protonect/CMakeLists.txt index 1c29e413d..0b9a26fa1 100644 --- a/examples/protonect/CMakeLists.txt +++ b/examples/protonect/CMakeLists.txt @@ -155,6 +155,14 @@ ADD_DEFINITIONS(-DRESOURCES_INC) ADD_LIBRARY(freenect2 SHARED ${SOURCES}) TARGET_LINK_LIBRARIES(freenect2 ${LIBRARIES}) +ADD_EXECUTABLE(test_opengl + src/test_opengl_depth_packet_processor.cpp +) + +TARGET_LINK_LIBRARIES(test_opengl + freenect2 +) + ADD_EXECUTABLE(Protonect Protonect.cpp ) From b22f5b81871b80c72c532be1e33ea9d9601e1c51 Mon Sep 17 00:00:00 2001 From: Gabor Papp Date: Wed, 11 Feb 2015 13:56:47 +0100 Subject: [PATCH 6/6] added --dump Protonect option for exporting test_opengl input test data --- examples/protonect/Protonect.cpp | 20 +++++++++++++++++-- .../libfreenect2/depth_packet_processor.h | 2 +- .../include/libfreenect2/packet_pipeline.h | 3 ++- .../src/cpu_depth_packet_processor.cpp | 16 +++++++-------- examples/protonect/src/packet_pipeline.cpp | 6 +++--- 5 files changed, 32 insertions(+), 15 deletions(-) diff --git a/examples/protonect/Protonect.cpp b/examples/protonect/Protonect.cpp index 2b7dd96d6..0ef51fe38 100644 --- a/examples/protonect/Protonect.cpp +++ b/examples/protonect/Protonect.cpp @@ -54,10 +54,26 @@ int main(int argc, char *argv[]) binpath = program_path.substr(0, executable_name_idx); } + bool dump_test_data = false; + for(int i = 1; i < argc; ++i) + { + std::string arg(argv[i]); + if(arg == "--dump") + { + dump_test_data = true; + } + } libfreenect2::Freenect2 freenect2; - //libfreenect2::Freenect2Device *dev = freenect2.openDefaultDevice(); - libfreenect2::Freenect2Device *dev = freenect2.openDefaultDevice(new libfreenect2::CpuPacketPipeline()); + libfreenect2::Freenect2Device *dev; + if(dump_test_data) + { + dev = freenect2.openDefaultDevice(new libfreenect2::CpuPacketPipeline(dump_test_data)); + } + else + { + dev = freenect2.openDefaultDevice(); + } if(dev == 0) { diff --git a/examples/protonect/include/libfreenect2/depth_packet_processor.h b/examples/protonect/include/libfreenect2/depth_packet_processor.h index 0868d87e0..b58e59ca8 100644 --- a/examples/protonect/include/libfreenect2/depth_packet_processor.h +++ b/examples/protonect/include/libfreenect2/depth_packet_processor.h @@ -147,7 +147,7 @@ class CpuDepthPacketProcessorImpl; class LIBFREENECT2_API CpuDepthPacketProcessor : public DepthPacketProcessor { public: - CpuDepthPacketProcessor(); + CpuDepthPacketProcessor(bool dump_test_data = false); virtual ~CpuDepthPacketProcessor(); virtual void setConfiguration(const libfreenect2::DepthPacketProcessor::Config &config); diff --git a/examples/protonect/include/libfreenect2/packet_pipeline.h b/examples/protonect/include/libfreenect2/packet_pipeline.h index b1bf467c2..fc2c4840b 100644 --- a/examples/protonect/include/libfreenect2/packet_pipeline.h +++ b/examples/protonect/include/libfreenect2/packet_pipeline.h @@ -77,8 +77,9 @@ class LIBFREENECT2_API CpuPacketPipeline : public BasePacketPipeline { protected: virtual DepthPacketProcessor *createDepthPacketProcessor(); + bool dump_test_data_; public: - CpuPacketPipeline(); + CpuPacketPipeline(bool dump_test_data = false); virtual ~CpuPacketPipeline(); }; diff --git a/examples/protonect/src/cpu_depth_packet_processor.cpp b/examples/protonect/src/cpu_depth_packet_processor.cpp index 5d347abc8..0ad8f29fe 100644 --- a/examples/protonect/src/cpu_depth_packet_processor.cpp +++ b/examples/protonect/src/cpu_depth_packet_processor.cpp @@ -82,8 +82,9 @@ class CpuDepthPacketProcessorImpl bool flip_ptables; bool save_ptables; + bool save_raw_ir; - CpuDepthPacketProcessorImpl() + CpuDepthPacketProcessorImpl(bool dump_test_data) { newIrFrame(); newDepthFrame(); @@ -96,7 +97,8 @@ class CpuDepthPacketProcessorImpl enable_edge_filter = true; flip_ptables = true; - save_ptables = true; + save_ptables = dump_test_data; + save_raw_ir = dump_test_data; } void startTiming() @@ -603,8 +605,8 @@ class CpuDepthPacketProcessorImpl } }; -CpuDepthPacketProcessor::CpuDepthPacketProcessor() : - impl_(new CpuDepthPacketProcessorImpl()) +CpuDepthPacketProcessor::CpuDepthPacketProcessor(bool dump_test_data) : + impl_(new CpuDepthPacketProcessorImpl(dump_test_data)) { } @@ -757,17 +759,15 @@ void CpuDepthPacketProcessor::load11To16LutFromFile(const char* filename) void CpuDepthPacketProcessor::process(const DepthPacket &packet) { - static bool rawir_exported = false; - if(listener_ == 0) return; - if(!rawir_exported && (packet.sequence > 100)) + if(impl_->save_raw_ir && (packet.sequence > 100)) { std::cerr << "[CpuDepthPacketProcessor::process] Exporting depth packet " << packet.sequence << std::endl; std::ofstream rawIrOut("rawir.bin", std::ios::out | std::ios::binary); rawIrOut.write(reinterpret_cast(packet.buffer), packet.buffer_length); rawIrOut.close(); - rawir_exported = true; + impl_->save_raw_ir = false; } impl_->startTiming(); diff --git a/examples/protonect/src/packet_pipeline.cpp b/examples/protonect/src/packet_pipeline.cpp index 1c66f66b6..727819332 100644 --- a/examples/protonect/src/packet_pipeline.cpp +++ b/examples/protonect/src/packet_pipeline.cpp @@ -79,7 +79,7 @@ DepthPacketProcessor *BasePacketPipeline::getDepthPacketProcessor() const return depth_processor_; } -CpuPacketPipeline::CpuPacketPipeline() +CpuPacketPipeline::CpuPacketPipeline(bool dump_test_data) : dump_test_data_( dump_test_data ) { initialize(); } @@ -88,11 +88,11 @@ CpuPacketPipeline::~CpuPacketPipeline() { } DepthPacketProcessor *CpuPacketPipeline::createDepthPacketProcessor() { - CpuDepthPacketProcessor *depth_processor = new CpuDepthPacketProcessor(); + CpuDepthPacketProcessor *depth_processor = new CpuDepthPacketProcessor(dump_test_data_); depth_processor->load11To16LutFromFile("11to16.bin"); depth_processor->loadXTableFromFile("xTable.bin"); depth_processor->loadZTableFromFile("zTable.bin"); - + return depth_processor; }