2014-02-23 6 views
0

Kinect 센서의 비디오 피드에 로컬 이미지를 오버레이하려하지만 이미지 디렉토리를 겹쳐서 표시하면 이미지 디렉토리가 올바른 것처럼 보이지만 DirectoryNotFoundException이됩니다. 왜 내가 할 수있는 지에 대한 설명이 있습니다. 이 오류가 발생하거나 수정하는 방법은 무엇입니까?DirectoryNotFoundException을 수정하는 방법은 무엇입니까?

코드의 행에 DirectoryNotFoundException 예외 : 완전한 방법은 아래 넥트 센서로부터의 비디오 피드를 취득하고, 비디오 피드에 이미지를 오버레이한다

drawingContext.DrawImage(overlayImage, new Rect(12, 12, overlayImage.Width, overlayImage.Height)); 

. 오버레이를 그릴 때 코드를 사용하지만 오버레이를 사용하지 않고 잘 작동하면 프로그램이 중단됩니다.

void myKinect_ColorFrameReady(object sender, ColorImageFrameReadyEventArgs e) 
{ 
    using (ColorImageFrame colorFrame = e.OpenColorImageFrame()) 
    { 
     if (colorFrame == null) return; 
     byte[] colorData = new byte[colorFrame.PixelDataLength]; 
     colorFrame.CopyPixelDataTo(colorData); 
      KinectVideo.Source = BitmapSource.Create(colorFrame.Width, colorFrame.Height, 96, 96, 
      PixelFormats.Bgr32, null, colorData, colorFrame.Width * colorFrame.BytesPerPixel); 

     //drawing image overlay to video feed 
     var drawingVisual = new DrawingVisual(); 
     var drawingContext = drawingVisual.RenderOpen(); 
     drawingContext.DrawImage(BitmapSource.Create(colorFrame.Width, colorFrame.Height, 96, 96, PixelFormats.Bgr32, null, colorData, colorFrame.Width * colorFrame.BytesPerPixel), 
            new Rect(new Size(colorFrame.Width, colorFrame.Height))); 
     var overlayImage = new BitmapImage(new Uri("Images/boxbag.png", UriKind.Relative)); 

// 오류 여기에 던져 -> drawingContext.DrawImage (overlayImage, 새로운 사각형 (12, 12, overlayImage.Width, overlayImage.Height)); drawingContext.Close(); var mergedImage = new RenderTargetBitmap (colorFrame.Width, colorFrame.Height, 96, 96, PixelFormats.Pbgra32); mergedImage.Render (drawingVisual); KinectVideo.Source = mergedImage;

 } 
} 

이 Visual Studio에서와 같이 전체 오류가가, 내가 오류에서 이해하면 폴더에 theimage는 아니지만 이미지가 Images라는 이름의 폴더에 저장됩니다으로 이해가되지 않습니다 프로젝트 솔루션에서

An unhandled exception of type 'System.IO.DirectoryNotFoundException' occurred in PresentationCore.dll 

Additional information: Could not find a part of the path 'C:\Users\Brian Smith\documents\visual studio 2013\Projects\KinectKickboxingBVversion1\KinectKickboxingBVversion1\bin\x86\Debug\Images\boxbag.png' 

.

이 VS에 따라 이미지의 전체 경로는 다음과 같습니다

C:\Users\Brian Smith\documents\visual studio 2013\Projects\KinectKickboxingBVversion1\KinectKickboxingBVversion1\Images\boxbag.png 
+2

불평하는 경로를 읽으십시오. 귀하의 현재 디렉토리는 귀하가 생각하는 것이 아닙니다. – SLaks

+0

난 그냥 오류 경로와 실제를 보았다 .. 실제 경로와 VS의 차이는 여분의'\ bin \ x86 \ Debug'입니다. 어떻게하면이 경로 대신 이미지 위치를 바꿀 수 있습니까? –

+0

그렇게하지 마십시오. 응용 프로그램에 이미지를 포함해야합니다. 그렇지 않으면 다른 디렉토리에서 실행할 수 없습니다. – SLaks

답변

1

대신이 시도 (어셈블리의 이름을 조정할 필요가 있습니다) : Pack URIs

var overlayImage 
    = new BitmapImage(new Uri("pack://application:,,,/KinectKickboxingBVversion1;component/Images/boxbag.png")); 

더.

관련 문제