void CameraNUI::onNextImage() { short *depth = 0; char *rgb = 0; uint32_t ts; int ret; if (triggered && trigger.empty()) { return; } else { // clear all triggers while(!trigger.empty()) trigger.read(); } // retrieve color image cv::Size size; if (resolution == FREENECT_RESOLUTION_MEDIUM) size = cv::Size(640, 480); if (resolution == FREENECT_RESOLUTION_HIGH) size = cv::Size(1280, 1024); cv::Mat image_out; ret = freenect_sync_get_video_with_res((void**)&rgb, &ts, index, (int)resolution, imageType); if(imageType == FREENECT_VIDEO_RGB) { cv::Mat tmp_rgb(size, CV_8UC3, rgb); cv::cvtColor(tmp_rgb, image_out, CV_RGB2BGR); } if(imageType == FREENECT_VIDEO_IR_8BIT) { cv::Mat tmp_gray(size, CV_8UC1, rgb); image_out = tmp_gray; } if(imageType == FREENECT_VIDEO_BAYER) { cv::Mat tmp_gray(size, CV_8UC1, rgb); image_out = tmp_gray; } // // // retrieve depth image ret = freenect_sync_get_depth((void**)&depth, &ts, index, depthType); cv::Mat tmp_depth(480, 640, CV_16UC1, depth); tmp_depth.copyTo(depthFrame); // write data to output streams //outImg.write(cameraFrame); outImg.write(image_out); outDepthMap.write(depthFrame); camera_info.write(m_camera_info); }
void CameraNUI::onNextImage() { short *depth = 0; char *rgb = 0; uint32_t ts; int ret; // retrieve color image ret = freenect_sync_get_video((void**)&rgb, &ts, 0, FREENECT_VIDEO_RGB); cv::Mat tmp_rgb(480, 640, CV_8UC3, rgb); cv::cvtColor(tmp_rgb, cameraFrame, CV_RGB2BGR); // retrieve depth image ret = freenect_sync_get_depth((void**)&depth, &ts, 0, FREENECT_DEPTH_REGISTERED); cv::Mat tmp_depth(480, 640, CV_16SC1, depth); tmp_depth.copyTo(depthFrame); // write data to output streams outImg.write(cameraFrame); outDepthMap.write(depthFrame); camera_info.write(m_camera_info); }