所以我正在使用这个图书馆,我在网上发现,它应该使它超级容易使用我的网络摄像头与C#,所以我决定给它一个尝试。我正在模仿的项目是使用WPF或WinForms,其中有两种。我决定我想创建一个控制台版本的这个,现在有一些小问题,关于控制和什么不是,但我似乎是所有的控制,我面临的问题是,它走出了它的逻辑,原因不明。
事情应该是这样的。(在WPF中也是如此)
webcam.Start(); -> webcam.Start(0); Starts the webcam here -> webcam_ImageCaptured() -> LoadBitmap() -> webcam_ImageCaptured() -> LoadBitmap() -> webcam_ImageCaptured() and loop through those last two
下面是我的功能(控制台应用程序)
webcam.Start(); -> webcam.Start(0); Starts the webcam here -> and then it steps out of webcam.Start(); and closes.
我不知道为什么它会出现这样的情况,我真的很想知道,一直在反复调试,但我真的无法解开这个谜团。
这里是控制台应用程序的主要部分
class Program
{
static WebCam webcam;
static System.Windows.Controls.Image image = new System.Windows.Controls.Image();
[STAThread]
static void Main(string[] args)
{
webcam = new WebCam();
webcam.InitializeWebCam(ref image);
webcam.Start();
}
}
和网络摄像机类https://ghostbin.com/paste/kvvx2
和Helper类https://ghostbin.com/paste/vk8qz
这是WPF应用程序的主要功能
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
WebCam webcam;
private void mainFrm_Loaded(object sender, RoutedEventArgs e)
{
webcam = new WebCam();
webcam.InitializeWebCam(ref imgMain);
}
private void btnCapture_Click(object sender, RoutedEventArgs e)
{
webcam.Start();
}
}
这里是我找到所有内容的原始帖子https://sites.google.com/site/webcamlibrarydotnet/wpf and-csharp-sample-code-and-download
在console application中,在末尾添加console.readline(),这样app就保持运行状态。
static void Main(string[] args)
{
webcam = new WebCam();
webcam.InitializeWebCam(ref image);
webcam.Start();
Console.ReadLine();
}
然后只需确保WebCAM_ImageCaptured-Events正在触发。即使Start-method立即返回,它也可能被设计为不会阻塞调用线程。