2012-02-02 1 views
4

C# 응용 프로그램에서 사용되는 래퍼를 대체해야합니다. 기본적으로, 우리가해야 할 일은 두 개의 그림 상자 중 하나에 웹캠 피드를 첨부하는 것입니다. 이 버튼을 누르면 버튼을 눌러 스틸 이미지를 찍어 카메라 피드를 분리하고 스틸 이미지를 그림 상자에 첨부 한 다음 나중에 카메라 피드를 다시 부착 할 수 있습니다. 이전에 CaptureDevice.cs 파일과 Pinvoke.dll을 사용하여 avicap32.dll에 묶는 무료 코드를 발견했습니다. 불행하게도 이것은 무작위적이고 간헐적 인 오류가있는 것으로 보인다. 그것은 너무 색다른 것입니다. 임의의 지점에서 사진 상자 중 하나가 검게 갈 수 있고 사진을 찍을 때까지 피드가 표시되지 않습니다.이 때 적절한 그림이 그림 상자에 부착됩니다. 그런 다음 웹캠이 하나만 연결되어 있어도 웹캠을 선택하라는 메시지가 계속 표시됩니다. 그렇지 않은 경우 웹캠이 선택되지 않습니다.웹캠, C# 및 신뢰할 수있는 래퍼

솔직히 말해서 Microsoft는 웹캠 비디오 피드를 처리하기 위해 .NET에 아무것도 포함하지 않았다는 사실에 놀라면서 당황 스럽습니다. 나는이 버그가있는 웹캠 시스템을 대체하기 위해 구현하기에 신뢰성 있고 상대적으로 간단한 것을 찾고 있습니다.

+0

이 기사를 읽어? – Yahia

+0

이 게시물에있는 링크 중 일부는 도움이 될 수 있습니다. http://stackoverflow.com/questions/833724/c-sharp-directshow-net-simple-webcam-access – CodingWithSpike

+0

여기에 몇 가지 샘플 코드가 있습니다. http : // www .c-sharpcorner.com/UploadFile/iersoy/how-to-use-webcam-in-xna/XNA와 관련되어 있지만 작동 할 수도 있습니다. 기본적으로 DirectShow (DirectX의 일부)를 탭합니다. – CodingWithSpike

답변

0

나는 나는 많은 C++ 라이브러리 OpenCV의를 사용하고 있습니다

http://www.emgu.com/wiki/index.php/Main_Page

을 제안 할 수 있습니다 그리고 내가 해봤 다른 것들에서 웹캠을 위해 아주 잘 작동하는 것 같다. Emgu는 OpenCV 용 C# 래퍼 일뿐입니다.

다음은이를 시험해보기위한 샘플 프로젝트입니다. 매우 기본적이고 간단하지만 즉시 작업해야합니다.

http://dl.dropbox.com/u/18919663/vs%20samples/OpenCVCSharpTest.zip (바로 업로드)

샘플 : http://directshownet.sourceforge.net

그것의 코드 샘플이 포함되어

using Emgu.CV; 
using Emgu.CV.Structure; 
... 

public partial class Form1 : Form 
{ 
    public Capture cvWebCam; 
    public Form1() 
    { 
     InitializeComponent(); 

     try 
     { 
      cvWebCam = new Capture(); 
      timer1.Start(); 
     } 
     catch 
     { 
      Console.WriteLine("Default camera not found or could not start"); 
     } 
    } 

    private void timer1_Tick(object sender, EventArgs e) 
    { 
     if (cvWebCam != null) 
     using (Emgu.CV.Image<Bgr, byte> frame = cvWebCam.QueryFrame()) 
     { 
      pictureBox1.BackgroundImage = frame.ToBitmap(); 
     } 
    } 
}