# HG changeset patch # User Eleni Maria Stea # Date 1382562553 -10800 # Node ID 700127288dc567e815c75e3890ab2180adc6e670 # Parent 1ff5a1a50b41fae201f8dd704e6793bf8b711cfb quick backup todo: fix save_ppm subimage2d diff -r 1ff5a1a50b41 -r 700127288dc5 Makefile --- a/Makefile Wed Oct 16 15:41:08 2013 +0300 +++ b/Makefile Thu Oct 24 00:09:13 2013 +0300 @@ -14,6 +14,8 @@ $(bin): $(obj) $(CXX) -o $@ $(obj) $(LDFLAGS) +-include $(dep) + %.d: %.cc @$(CPP) $(CXXFLAGS) $< -MM -MT $(@:.d=.o) >$@ diff -r 1ff5a1a50b41 -r 700127288dc5 src/frame.cc --- a/src/frame.cc Wed Oct 16 15:41:08 2013 +0300 +++ b/src/frame.cc Thu Oct 24 00:09:13 2013 +0300 @@ -1,3 +1,4 @@ +#include #include #include //TODO remove @@ -16,8 +17,33 @@ Frame::Frame() { - 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); + video_buf = cv::Mat::zeros(KINECT_VIDEO_HEIGHT, KINECT_VIDEO_WIDTH, CV_8UC3); + depth_buf = cv::Mat::zeros(KINECT_DEPTH_HEIGHT, KINECT_DEPTH_WIDTH, CV_8UC1); + + tex_setup(); +} + +void Frame::tex_setup() +{ + glGenTextures(1, &video_tex); + glGenTextures(1, &depth_tex); + + glBindTexture(GL_TEXTURE_2D, video_tex); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); + glTexImage2D(GL_TEXTURE_2D, 0, GL_BGRA, video_buf.size().width, video_buf.size().height, + 0, GL_BGRA, GL_UNSIGNED_BYTE, &video_buf); + + glBindTexture(GL_TEXTURE_2D, depth_tex); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); + glTexImage2D(GL_TEXTURE_2D, 0, GL_BGRA, depth_buf.size().width, depth_buf.size().height, + 0, GL_BGRA, GL_UNSIGNED_BYTE, &depth_buf); + } void Frame::process() @@ -33,22 +59,77 @@ return; } - 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); + /* freenect video data to cv mat: */ + unsigned char* src = (unsigned char*)video; + unsigned char* dest = frame->video_buf.data; + + for(int i=0; i(depth); - frame->depth_buf.data = (uchar*)depth_data; + /* freenect depth data to cv mat: */ + unsigned char* src = (unsigned char*)depth; + unsigned char* dest = frame->depth_buf.data; + + for(int i=0; i /* from specs */ -#define FREENECT_VIDEO_WIDTH 640 -#define FREENECT_VIDEO_HEIGHT 480 -#define FREENECT_DEPTH_WIDTH 640 -#define FREENECT_DEPTH_HEIGHT 480 +#define KINECT_VIDEO_WIDTH 640 +#define KINECT_VIDEO_HEIGHT 480 +#define KINECT_DEPTH_WIDTH 640 +#define KINECT_DEPTH_HEIGHT 480 struct KinectParams { double angle; @@ -23,21 +23,7 @@ freenect_resolution video_res; freenect_resolution depth_res; - KinectParams() - { - angle = 10; - - video_width = FREENECT_VIDEO_WIDTH; - video_height = FREENECT_DEPTH_HEIGHT; - depth_width = FREENECT_VIDEO_WIDTH; - depth_height = FREENECT_DEPTH_HEIGHT; - - led_color = LED_RED; - video_format = FREENECT_VIDEO_RGB; - depth_format = FREENECT_DEPTH_11BIT; - video_res = FREENECT_RESOLUTION_MEDIUM; - depth_res = FREENECT_RESOLUTION_MEDIUM; - } + KinectParams(); }; bool init_kinect(freenect_context **kin_ctx, freenect_device **kin_dev, KinectParams *kin_params);