我设法让一个网络摄像头使用 Aforge 运行。代码可以在我的回答中找到。
现在我想做一些计算机视觉的东西,并将一些结果返回到主窗体。我遇到的线程问题来自该代码的这一部分:
void FinalVideo_NewFrame(object sender, NewFrameEventArgs eventArgs)
{ Bitmap video = (Bitmap)eventArgs.Frame.Clone();
pictureBox1.Image = video;
// count red colors
// not yet written
TextBox1.text = "demo error"; // >> i like to return a value to the main form
}
然而,问题是它在另一个线程中处理视频帧,现在我无法从该线程返回答案到主窗体。我没有写 Aforge,我只是把它链接起来,让它在我的表单上工作。
我无法改变 Aforge 视频的工作方式。我的意思是它从来没有得到回报,这是我喜欢做的事情。有没有办法得到结果,比如文本框中的字符串文本。在运行此代码的主窗体上?
我可以按照线程的示例代码进行操作,但这有点过头了,因为我对 Aforge 中视频采集的设计方式没有太大影响。
我一直想知道是否仅仅为了更新文本框而提高另一个线程可能会起作用,但我不确定并且想知道最终会创建许多线程,从而导致大量内核切换负载。
一些附加信息:上面的代码线程是从下面的这个按钮功能开始的。
private void button1_Click(object sender, EventArgs e)
{ FinalVideo = new VideoCaptureDevice(VideoCaptureDevices[comboBox1.SelectedIndex].MonikerString);
FinalVideo.NewFrame += new NewFrameEventHandler(FinalVideo_NewFrame);
FinalVideo.Start();
}