Touchless Vision C#网络摄像头包装,无法在没有安装VS的情况下运行

时间:2012-02-15 07:52:31

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

因此,我一直在寻找一种在C#应用程序中使用网络摄像头的好方法。我尝试了一个p / invoke dll,结果是莫名其妙地无法解决的bug。在修补了其他一些不合适或过时的陈旧之后,我被提到了这个:

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

这是Touchless Vision代码,其中C#包装器已更新,可在VS 2010中使用。只要在机器上安装了VS,它就能完美运行。在任何没有的版本上下载并运行该版本,它将抛出一个错误,声称它无法找到WebCamLib.dll或其依赖项之一。有趣的是,我已将其集成到项目中。它工作得很好,但我希望能够在没有其他安装程序的情况下分发它,或者要求在所有内容上安装VS 2010。这里给出了什么?

2 个答案:

答案 0 :(得分:0)

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

但是你确定在app目录中复制了WebCamLib.dll吗? Aforge.Net还需要一些dll复制到计算机,但是如果你将Copy Local属性设置为true,它应该在Debug / Release目录中,当你使用Publish释放应用程序时它也会在目录中。

样品:

  1. 将Aforge.Controls.dll添加到工具箱项目

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

  3. 在表单类

  4. 中添加private FilterInfoCollection videoDevices;
  5. 添加到表格初始化程序(或在您想要启动相机的功能中)

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

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

答案 1 :(得分:0)

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

假设您有对dll的引用以及它们应该在哪里的文件,那么唯一要做的就是检查dll依赖项,在这种情况下 touchless和webcamlib dll的程序员并不关心“版本化”,所以,找到x64和x86的c ++ vs2012重新分发并安装它们,然后运行你的应用程序并继续你的项目。