xna中的网络摄像头呼叫

xna中的网络摄像头呼叫,xna,webcam,Xna,Webcam,我是新来的 我想使用我的网络摄像头,并将网络摄像头图像作为3D模型的背景纹理 是否有调用网络摄像头的功能 谢谢你的建议不久前我自己也遇到了这个问题,我想出了一个相当混乱的解决方案 首先,您需要使用motion_src库,您可以在这里找到: 这篇教程是关于运动检测的,但是如果你下载了演示代码,你就可以从相机上获取输入 现在,将其添加为xna项目的参考 一旦设置了从相机捕获提要的系统(所有详细信息都在该教程中,在此不再重复),您将需要将提要(捕获到system.Drawing.Bitmap中)复制

我是新来的

我想使用我的网络摄像头,并将网络摄像头图像作为3D模型的背景纹理

是否有调用网络摄像头的功能


谢谢你的建议

不久前我自己也遇到了这个问题,我想出了一个相当混乱的解决方案

首先,您需要使用motion_src库,您可以在这里找到:

这篇教程是关于运动检测的,但是如果你下载了演示代码,你就可以从相机上获取输入

现在,将其添加为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);
Texture2D图像;
b=(System.Drawing.Bitmap)camera.LastFrame.Clone();
对于(int j=0;j

然后,您可以使用对spritebatch:)的普通调用来显示图像纹理。

您可以使用第三方。它可以使用网络摄像头或AVI、MPEG或WMV,并允许您访问纹理2D对象,当前帧作为图像,可与spritebatch一起使用或应用于3D对象

  • 将VideoTexture.cs文件复制到您自己的项目中
  • 将VideoTexture.cs文件中的名称空间更改为 您的项目名称空间
  • 从中添加对DirectShowLib-2005.dll的引用 DirectShow.NET库
  • 编译它。VideoTexture类现在应该可以在您的 项目

  • 我从未使用过它,但如果您下载了文档,它应该会有所帮助。只需创建一个VideoTexture,并使用其VideoTexture2D属性检索Texture2D即可。然后,您可以将其设置为某些3D对象的每个效果的纹理。

    如果您查看AForge框架,您将找到一个在网络摄像头提要上执行运动检测的示例程序

    这个框架有一个非常容易获取的网络摄像头提要

    基本上以

    VideoCaptureDevice device = new VideoCaptureDevice(monikor);
    device.NewFrame += new AForge.Video.NewFrameEventHandler(webcam_NewFrame);
    webcam.Start();
    
    在那里,您可以通过调用类似以下代码来获取网络摄像头的monikor

    FilterInfoCollection webcamList = new FilterInfoCollection(FilterCategory.VideoInputDevice);
    
    foreach(FilterInfo info in webcamList)
    {
        string monikor = info.MonikorString;
        string deviceName = info.Name;
    }
    
    这是我遇到的获取网络摄像头提要的最好/最简单的方法


    然后,您可以将位图转换为纹理2D并根据需要显示

    谢谢,但这对我来说太复杂了,我不明白你到底在说什么?我只是想把网络摄像头的图像画到屏幕上。在这个例子中,有太多的类我不知道该检查哪一个,作者解释了,但他在得到视频帧后开始解释这些功能,我不需要阈值或者,在我的项目中,我们将完成教程中的部分,将图像捕获到System.Drawing.Bitmap,然后忽略教程的其余部分,一旦获得位图,您只需将其复制到XNA纹理中,如我上面所示,就是这样。如果你还是不明白,我可以试着找到我以前的项目,虽然我不确定我是否还拥有它:/I抱歉,但你在谈论哪个教程没有任何教程标题或链接,我假设你谈论的是算法标题下的文章,这些都是从阈值开始的。你有关于videoTexture类的示例代码吗?我找到了videoTexture类,但我找不到设法使用它。这有什么帮助吗?