Touchless Vision C#网络摄像头包装,可以';t在未安装VS的情况下运行
本文关键字:安装 VS 运行 情况下 网络 Vision 摄像头 包装 可以 Touchless | 更新日期: 2023-09-27 18:24:44
所以我一直在寻找一种在C#应用程序中使用网络摄像头的好方法。我尝试了一个p/invoke dll,结果发现它莫名其妙地存在无法修复的错误。在修补了其他一些不合适或完全过时的东西后,我被提到了这个:
http://jakemdrew.wordpress.com/2012/01/10/controlling-your-web-camera-using-c/#comment-15
这是一个带有C#包装器的Touchless Vision代码,更新后可以在VS2010中工作。它非常有效。。。只要VS安装在机器上。下载并在任何没有的版本上运行该版本构建,它将抛出一个错误,声称找不到WebCamLib.dll或其依赖项之一。有趣的是,我已经把它集成到项目中了。它工作得很好,但我希望能够在没有额外安装程序或需要在所有东西上安装VS2010的情况下分发它。这里有什么?
我在多台计算机上使用Aforge.net库(Aforg.net),即使没有安装VS,也没有任何问题。
但是你确定WebCamLib.dll被复制到应用程序目录中吗?Aforge.Net还需要将一些dll复制到计算机上,但如果您已将"复制本地"属性设置为true,则它应该在Debug/Release目录中,而且当您使用Publish发布应用程序时,它也会在该目录中。
样品:
-
将Aforge.Controls.dll添加到您的工具箱项目
-
在设计器中,将VideoSourcePlayer控件放在您的表单中
-
在表单类中添加
private FilterInfoCollection videoDevices;
-
添加到表单初始值设定项中(或在您想要启动相机的函数中)
videoDevices = new FilterInfoCollection(FilterCategory.VideoInputDevice);
foreach (FilterInfo fi in videoDevices)
{
this.videoSourcePlayer1.VideoSource = new VideoCaptureDevice(MonikerString);
this.videoSourcePlayer1.Start();
break;
}
现在您应该在VideoSourcePlayer控件中从网络摄像头获取图像。您可以使用VideoSourcePlayer控件的NewFrame事件来访问相机正在发送的每个帧,并保存或更改图像。
好吧,这个问题已经过去了一段时间,但为了解决它,我会这么说:
假设您有对dll和文件的引用,在这种情况下,只需检查dll依赖项touchless和webcamlib dll的程序员不太关心"版本控制",所以,找到适用于x64和x86的c++vs2012重新分发并安装它们,然后运行你的应用程序并继续你的项目。