카테고리 없음

[xna] xna에서 웹캠 호출

행복을전해요 2021. 1. 13. 03:51

AForge 프레임 워크를 확인하면 웹캠 피드에서 동작 감지를 수행하는 샘플 프로그램을 찾을 수 있습니다.

http://code.google.com/p/aforge/

이 프레임 워크는 웹캠 피드를 매우 쉽게 얻을 수 있습니다.

기본적으로

VideoCaptureDevice device = new VideoCaptureDevice(monikor);
device.NewFrame += new AForge.Video.NewFrameEventHandler(webcam_NewFrame);
webcam.Start();

다음과 유사한 코드를 호출하여 웹캠의 별명을 얻을 수 있습니다.

FilterInfoCollection webcamList = new FilterInfoCollection(FilterCategory.VideoInputDevice);

foreach(FilterInfo info in webcamList)
{
    string monikor = info.MonikorString;
        string deviceName = info.Name;
        }
        

이것은 웹캠 피드를 얻기 위해 내가 만난 최고의 / 가장 쉬운 방법입니다.

그런 다음 비트 맵을 Texture2D로 변환하고 원하는대로 표시 할 수 있습니다!

-------------------

나는이 문제를 얼마 전에 직접 만났는데, 내가 생각 해낸 꽤 지저분한 해결책이다.

먼저 motion_src 라이브러리를 사용해야합니다. 여기에서 찾을 수 있습니다.

http://www.codeproject.com/KB/audio-video/Motion_Detection.aspx

이 튜토리얼은 모션 감지에 관한 것이지만 데모 코드를 다운로드하면 카메라에서 입력을 캡처 할 수 있습니다.

이제 xna 프로젝트에 대한 참조로 추가하십시오.

시스템이 카메라에서 피드를 캡처하도록 설정 한 후에 (모든 세부 정보는 해당 자습서에 있으며 여기서 반복하지 않음) 피드를 복사해야합니다 (System.Drawing.Bitmap에 캡처 됨). xna 텍스처.

Texture2D image;

b = (System.Drawing.Bitmap)camera.LastFrame.Clone();
for (int j = 0; j < image.Height; j++)
{
    for (int i = 0; i < image.Width; i++)
        {
                c = b.GetPixel(i, j);
                        colours[i + j * image.Width] = new Color(c.R, c.G, c.B, byte.MaxValue);
                            }
                            }
                            image.SetData<Color>(colours);
                            

그런 다음 spritebatch에 대한 일반 호출을 사용하여 이미지 텍스처 를 표시 할 수 있습니다. :)

-------------------

타사 VideoTexture 클래스를 사용할 수 있습니다 . 웹캠 또는 AVI, MPEG 또는 WMV를 사용할 수 있으며 현재 프레임이있는 Texture2D 객체에 대한 액세스를 스프라이트 배치와 함께 사용하거나 3D 객체에 적용 할 수있는 이미지로 제공합니다.

  1. VideoTexture.cs 파일을 자신의 프로젝트에 복사하십시오.
  2. VideoTexture.cs 파일의 네임 스페이스를 프로젝트 네임 스페이스의 이름으로 변경합니다.
  3. DirectShow.NET 라이브러리에서 DirectShowLib-2005.dll에 대한 참조를 추가합니다.
  4. 그것을 컴파일하십시오. 이제 프로젝트에서 VideoTexture 클래스를 사용할 수 있습니다.

나는 그것을 사용한 적이 없지만 문서를 다운로드하면 도움이 될 것입니다. VideoTexture를 만들고 VideoTexture2D 속성을 사용하여 Texture2D를 검색하면됩니다. 그런 다음 일부 3D 개체의 각 효과에 대한 텍스처로 설정할 수 있습니다.



출처
https://stackoverflow.com/questions/2006184