【问题标题】:Touchless Vision C# webcam wrapper, can't run without VS installedTouchless Vision C# 网络摄像头包装,没有安装 VS 无法运行
【发布时间】:2012-02-15 07:52:31
【问题描述】:

所以我一直在寻找一种在 C# 应用程序中利用网络摄像头的好方法。我尝试了一个 p/invoke dll,结果证明它是莫名其妙且无法重现的错误。在修补了其他一些不合适或完全过时的东西之后,我被提到了这个:

http://jakemdrew.wordpress.com/2012/01/10/controlling-your-web-camera-using-c/#comment-15

这是带有 C# 包装器的 Touchless Vision 代码,更新后可在 VS 2010 中运行。它运行得非常好……只要机器上安装了 VS。下载并运行任何没有的版本构建,它会抛出一个错误,声称它找不到 WebCamLib.dll 或其依赖项之一。有趣的部分是我已经将它集成到项目中。它工作得很好,但我希望能够在没有额外安装程序或需要在所有东西上安装 VS 2010 的情况下分发它。这里给出了什么?

【问题讨论】:

    标签: c# visual-studio-2010 dll wrapper webcam


    【解决方案1】:

    我在多台计算机上使用 Aforge.net 库(Aforge.net)没有任何问题,即使没有安装 VS。

    但是你确定 WebCamLib.dll 被复制到了 app 目录中吗? Aforge.Net 还需要将一些 dll 复制到计算机上,但如果您将 Copy Local 属性设置为 true,则它应该位于 Debug/Release 目录中,当您使用 Publish 发布应用时,它也将位于该目录中。

    示例:

    1. 将 Aforge.Controls.dll 添加到您的工具箱项中

    2. 在设计器中将 VideoSourcePlayer 控件放入表单中

    3. 在表单类中添加private FilterInfoCollection videoDevices;

    4. 添加到表单初始化程序中(或您要启动相机的函数中)

    videoDevices = new FilterInfoCollection(FilterCategory.VideoInputDevice);
    
        foreach (FilterInfo fi in videoDevices)
        {
          this.videoSourcePlayer1.VideoSource = new VideoCaptureDevice(MonikerString);
          this.videoSourcePlayer1.Start();
          break;
        }
    
    

    现在您应该在 VideoSourcePlayer 控件中从网络摄像头获取图像。您可以使用 VideoSourcePlayer 控件的 NewFrame 事件来访问相机正在发送的每一帧并保存或更改图像。

    【讨论】:

    • 是的。一切都在应用程序目录中,包括 WebCamLib.dll。演示的发布版本本身不会在没有 VS 的计算机上运行,​​自然同样适用于任何试图集成它的东西。前段时间我看了一下 Aforge,但它非常庞大,我无法弄清楚如何简单地从网络摄像头中抓取图像。
    • 使用新帧事件在 Aforge 中抓取图像实际上非常简单。我将在我的答案中添加一些简单的代码。 Aforge 有点大,但只显示来自网络摄像头的图像只需几行代码
    • 谢谢!如果我不能在不久的将来解决这个问题,我会试一试。
    【解决方案2】:

    这个问题已经过去了一段时间,但为了解决这个问题,我会这样说:

    假设您有对 dll 和文件的引用,它们应该是唯一剩下要做的就是检查 dll 依赖关系,在这种情况下 非接触式和 webcamlib dll 的程序员不太关心“版本控制”,因此,找到 x64 和 x86 的 c++ vs2012 重新分发并安装它们,然后运行您的应用程序并继续您的项目。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-03
      相关资源
      最近更新 更多