/// <summary> /// Process a incoming stream frame /// </summary> void NuiColorStream::ProcessStreamFrame() { if (WAIT_OBJECT_0 == WaitForSingleObject(GetFrameReadyEvent(), 0)) { // Frame ready event has been set. Proceed to process incoming frame ProcessColor(); } }
/// <summary> /// Check if incoming frame is ready /// </summary> void NuiSkeletonStream::ProcessStreamFrame() { if (WAIT_OBJECT_0 == WaitForSingleObject(GetFrameReadyEvent(), 0)) { // if we have received any valid new depth data we may need to draw ProcessSkeleton(); } }
/// <summary> /// Open stream with a certain image resolution. /// </summary> /// <returns>Indicates success or failure.</returns> HRESULT NuiColorStream::OpenStream() { // Open color stream. HRESULT hr = m_pNuiSensor->NuiImageStreamOpen(m_imageType, m_imageResolution, 0, 2, GetFrameReadyEvent(), &m_hStreamHandle); // Reset image buffer if (SUCCEEDED(hr)) { m_imageBuffer.SetImageSize(m_imageResolution); // Set source image resolution to image buffer } return hr; }
/// <summary> /// Open stream with a certain image resolution. /// </summary> /// <param name="resolution">Frame image resolution</param> /// <returns>Indicates success or failure.</returns> HRESULT NuiDepthStream::OpenStream(NUI_IMAGE_RESOLUTION resolution) { m_imageType = HasSkeletalEngine(m_pNuiSensor) ? NUI_IMAGE_TYPE_DEPTH_AND_PLAYER_INDEX : NUI_IMAGE_TYPE_DEPTH; // Open depth stream HRESULT hr = m_pNuiSensor->NuiImageStreamOpen(m_imageType, resolution, 0, 2, GetFrameReadyEvent(), &m_hStreamHandle); if (SUCCEEDED(hr)) { m_pNuiSensor->NuiImageStreamSetImageFrameFlags(m_hStreamHandle, m_nearMode ? NUI_IMAGE_STREAM_FLAG_ENABLE_NEAR_MODE : 0); // Set image flags m_imageBuffer.SetImageSize(resolution); // Set source image resolution to image buffer } return hr; }
/// <summary> /// Start stream processing /// </summary> HRESULT NuiSkeletonStream::StartStream() { if (HasSkeletalEngine(m_pNuiSensor)) { if (m_paused) { // Clear skeleton data in stream viewers AssignSkeletonFrameToStreamViewers(nullptr); // Disable tracking skeleton return m_pNuiSensor->NuiSkeletonTrackingDisable(); } else { // Enable tracking skeleton DWORD flags = (m_seated ? NUI_SKELETON_TRACKING_FLAG_ENABLE_SEATED_SUPPORT : 0) | (m_near ? NUI_SKELETON_TRACKING_FLAG_ENABLE_IN_NEAR_RANGE : 0) | (ChooserModeDefault != m_chooserMode ? NUI_SKELETON_TRACKING_FLAG_TITLE_SETS_TRACKED_SKELETONS : 0); return m_pNuiSensor->NuiSkeletonTrackingEnable(GetFrameReadyEvent(), flags); } } return E_FAIL; }
/// <summary> /// Open stream with a certain image resolution. /// </summary> /// <param name="resolution">Frame image resolution</param> /// <returns>Indicates success or failure.</returns> HRESULT NuiDepthStream::OpenStream(NUI_IMAGE_RESOLUTION resolution) { m_imageType = HasSkeletalEngine(m_pNuiSensor) ? NUI_IMAGE_TYPE_DEPTH_AND_PLAYER_INDEX : NUI_IMAGE_TYPE_DEPTH; // Open depth stream HRESULT hr = m_pNuiSensor->NuiImageStreamOpen(m_imageType, resolution, 0, 2, GetFrameReadyEvent(), &m_hStreamHandle); if (SUCCEEDED(hr)) { m_pNuiSensor->NuiImageStreamSetImageFrameFlags(m_hStreamHandle, m_nearMode ? NUI_IMAGE_STREAM_FLAG_ENABLE_NEAR_MODE : 0); // Set image flags m_imageBuffer.SetImageSize(resolution); // Set source image resolution to image buffer } //////////////Video writer m_ImageRes=cvSize(static_cast<int>(m_imageBuffer.GetWidth()),static_cast<int>(m_imageBuffer.GetHeight())); m_pcolorImage =cvCreateImage(m_ImageRes, 8, 1); //openCV only supports <=8 bits return hr; }