gpt4 book ai didi

c# - Emgu/OpenCV : Event for VideoCapture. QueryFrame() 完成。

转载 作者:太空宇宙 更新时间:2023-11-03 22:19:27 25 4
gpt4 key购买 nike

这是我的代码的基本思想:

    private void CaptureCameraFrame()
{
Capture = new VideoCapture();
CameraModel.Instance.CameraViewMat = Capture.QueryFrame();

// do stuff with queried matrix here

if(noAbortCondition)
{
CaptureCameraFrame();
}
}

该方法应该在一个单独的线程中运行,在处理后使用当前图像更新我的 GUI。唯一的问题是,我遇到了两种不同的错误:

  1. 尝试读/写 protected 内存:这发生在第二遍的方法。
  2. 我在查询帧后立即使用 `CameraModel.Instance.CameraViewMat 得到空引用错误。

这两个问题似乎是相关联的,似乎 QueryFrame() 与其余代码异步运行,并且在程序跳转到下一步时未完成。问题是:我如何确定从相机中查询图像已经完成,我可以使用矩阵中的信息并开始新的查询?

在所有示例中,我发现这是通过使用时间完成的,但我想在处理完最后一帧后立即开始一个新帧。

当涉及到线程时,我在 C# 中并没有真正做太多,但据我所知,在这种情况下,人们会使用 asyncawait 关键字来确保异步方法中的方法完成。但是,在这种情况下我无法进行有效的实现。

最佳答案

您正在重复创建 VideoCapture 类实例,甚至没有处理它。仅创建一次 VideoCapture 实例并将它们用于您的任务。最后处理它。

public YourConstructor()
{
Capture = new VideoCapture();
}
private void CaptureCameraFrame()
{
CameraModel.Instance.CameraViewMat = Capture.QueryFrame();

// do stuff with queried matrix here

if(noAbortCondition)
{
CaptureCameraFrame();
}
}

希望它对您有用!

关于c# - Emgu/OpenCV : Event for VideoCapture. QueryFrame() 完成。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52494665/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com