# HG changeset patch # User Eleni Maria Stea # Date 1381927268 -10800 # Node ID 1ff5a1a50b41fae201f8dd704e6793bf8b711cfb # Parent b479136a1ab3575506104db390916d605be56b8d foo, TODO: fix conversions diff -r b479136a1ab3 -r 1ff5a1a50b41 src/frame.cc --- a/src/frame.cc Wed Oct 09 23:00:19 2013 +0300 +++ b/src/frame.cc Wed Oct 16 15:41:08 2013 +0300 @@ -1,4 +1,6 @@ -#include +#include +#include //TODO remove + #include #include #include @@ -14,12 +16,8 @@ Frame::Frame() { - if(video_buf.empty()) { - video_buf = cv::Mat(FREENECT_VIDEO_WIDTH, FREENECT_VIDEO_HEIGHT, CV_32FC3, cv::Scalar(0, 0, 0)); - } - if(depth_buf.empty()) { - depth_buf = cv::Mat(FREENECT_DEPTH_WIDTH, FREENECT_VIDEO_HEIGHT, CV_16UC1, 0); - } + video_buf = cv::Mat(FREENECT_VIDEO_WIDTH, FREENECT_VIDEO_HEIGHT, CV_8UC1, 0); + depth_buf = cv::Mat(FREENECT_DEPTH_WIDTH, FREENECT_DEPTH_HEIGHT, CV_16UC1, 0); } void Frame::process() @@ -30,12 +28,16 @@ void video_cb(freenect_device *kin_dev, void *video, uint32_t time) { - if(!video) { + if(!video || !frame) { has_video = false; return; } - //copy *video to video_buf if fail => has_video = false + uint8_t* video_data = static_cast(video); + frame->video_buf.data = (uchar*)video_data; + //frame->video_buf.convertTo(frame->video_buf, CV_8UC1); + cv::imshow("wx", frame->video_buf); + cv::waitKey(100); has_video = true; } @@ -46,5 +48,7 @@ return; } + uint16_t* depth_data = static_cast(depth); + frame->depth_buf.data = (uchar*)depth_data; has_depth = true; } diff -r b479136a1ab3 -r 1ff5a1a50b41 src/frame.h --- a/src/frame.h Wed Oct 09 23:00:19 2013 +0300 +++ b/src/frame.h Wed Oct 16 15:41:08 2013 +0300 @@ -9,6 +9,8 @@ cv::Mat video_buf; Frame(); + ~Frame(); //TODO delete Mat + void process(); }; diff -r b479136a1ab3 -r 1ff5a1a50b41 src/main.cc --- a/src/main.cc Wed Oct 09 23:00:19 2013 +0300 +++ b/src/main.cc Wed Oct 16 15:41:08 2013 +0300 @@ -45,6 +45,7 @@ glutIdleFunc(idle); glClearColor(1, 1, 1, 1); + frame = new Frame(); atexit(cleanup); glutMainLoop();