如何使用EMGUcv ImageBox控件显示来自单独图像捕获事件线程的图像

时间:2017-04-26 20:33:38

标签: vb.net opencv emgucv

我有一个事件线程,当从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)

    .
    .
    .

1 个答案:

答案 0 :(得分:0)

将从USB摄像头接收的图像数据保存到模块中的公共变量;该变量可以由要显示的主线程(UI表单线程)直接访问。你必须处理的唯一事情是避免两个线程之间的冲突(辅助线程想要将图像数据保存到变量,而主线程想要从中读取;你可以使用信号量来完成)。