我有一个事件线程,当从USB摄像头接收到图像时会触发该事件线程。这很有效。
但是,在同一事件捕获线程中,我想在具有emgu ImageBox
控件的UI表单中显示该图像。我无法直接编码到ImageBox1.Image = capturedImage
,因为ImageBox
位于UI表单中,而不在OnImageEvent
主题中。
我在这里使用某种类型的Invoke / Delegate来跳转线程吗? (我还在学习使用这些)
但我找不到对emgu ImageBox
控件的Invoke的任何引用。有没有人在使用此跨版本应用程序类型的emgu Imagebox
时有任何经验?
当前代码:
' This method defines an image event. In it, the image that
' triggered the event is converted and saved before incrementing
' the count. Please see Acquisition_CSharp example for more
' in-depth comments on the acquisition of images.
Protected Overrides Sub OnImageEvent(capturedImage As ManagedImage)
Console.WriteLine("Image event occurred...")
ImageBox2.Image = ConvertToOpenCVMat(capturedImage)
.
.
.
答案 0 :(得分:0)
将从USB摄像头接收的图像数据保存到模块中的公共变量;该变量可以由要显示的主线程(UI表单线程)直接访问。你必须处理的唯一事情是避免两个线程之间的冲突(辅助线程想要将图像数据保存到变量,而主线程想要从中读取;你可以使用信号量来完成)。