2011-10-24 3 views
0

두 개의 웹캠이 내장 된 태블릿 장치에서 실행되는 응용 프로그램을 만들고 있습니다. 요구 사항 중 하나는 이미지를 캡처하고 저장하는 것입니다.표현 인코딩을 사용하는 WPF 웹캠 캡처

지금까지 나는이 코드

Dim Job As New LiveJob 
Dim source As LiveDeviceSource 
source = Job.AddDeviceSource(EncoderDevices.FindDevices(EncoderDeviceType.Video).Item(0), Nothing) 

source.PreviewWindow = New PreviewWindow(New HandleRef(Me.panPreview, Me.panPreview.Handle)) 

Job.ActivateSource(source) 

이 호스트 윈폼 패널에서 미리보기 표시를 사용하여 웹캠의 출력의 미리보기를 얻을 수 있었다. 문제는이 스트림에서 이미지를 캡처하고 나중에 처리하기 위해 새 이미지 객체를 반환하는 방법입니다.

나는 RenderTargetBitmap을 사용하여 winforms 호스트를 캡처하려고했지만 검정 직사각형을 반환하고 winforms 패널을 렌더링하지 않을 것입니다.

답변

0

코드 프로젝트에서이 보석 조각을 발견했습니다. 여기에 코드가 있습니다. 여기서 panelVideoPreview는 미리보기로, 즉 panPreview 창입니다. 이것이 도움이되기를 바랍니다. 당신은 당신이 윈도우가 같은 발생 최소화하면 캡쳐가 이상 윈도우의 이미지이거나됩니다 캡처하려는 창을 통해 윈도우가있는 경우

private void cmdGrabImage_Click(object sender, EventArgs e)   
{ 
// Create a Bitmap of the same dimension of panelVideoPreview (Width x Height) 
    using (Bitmap bitmap = new Bitmap(panelVideoPreview.Width, panelVideoPreview.Height)) 
    { 
     using (Graphics g = Graphics.FromImage(bitmap)) 
     { 
      // Get the paramters to call g.CopyFromScreen and get the image 
      Rectangle rectanglePanelVideoPreview = panelVideoPreview.Bounds; 
      Point sourcePoints = panelVideoPreview.PointToScreen(new Point(panelVideoPreview.ClientRectangle.X, panelVideoPreview.ClientRectangle.Y)); 
      g.CopyFromScreen(sourcePoints, Point.Empty, rectanglePanelVideoPreview.Size); 
     } 
     string strGrabFileName = String.Format("C:\\Snapshot_{0:yyyyMMdd_hhmmss}.jpg", DateTime.Now); 
     toolStripStatusLabel1.Text = strGrabFileName; 
     bitmap.Save(strGrabFileName, System.Drawing.Imaging.ImageFormat.Jpeg);     
    } 
} 
0

, 당신은 coordenates의 스크린 샷을 캡처 할 수 있습니다. 이 방법은 coordenates와 함께 화면 캡처입니다.

스트리밍 캡처 이미지는 어떻게됩니까?