Example #1
0
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);
}
Example #2
0
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);
}