gpt4 book ai didi

multithreading - 对于多线程视频教练程序来说,这是一个合适的结构吗?

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

您好,我目前正在从事一个视频教练程序的项目,用于录制和重放视频,以及显示延迟的实时视频,并通过颜色跟踪位置。

该软件在 linux 上运行,在 4 核 odroid 上,最初我开始使它成为多线程,并将线程实现为每个新类的一部分。这些线程中的每一个都处理它们自己的 gui 元素。

我后来发现我需要在主/gui 线程中显示所有 gui 元素/视频。之前我用过 opencv 和 boost。但似乎使用 Qt 可能是一个更好的主意,因为一些代码已经依赖于 QT 库。我目前是编程新手,对opencv、qt、threading都不太熟悉。

我的问题是: 这作为程序的结构是否相对合理,或者我现在计划如何做存在固有的错误?

主/GUI线程

  • 将展示所有视觉和视频内容
  • 将为ButtonControl对象启动一个线程

按钮控件

  • 将处理所有按钮输入,控制程序中发生的事情
  • 根据按下的按钮启动和结束线程喜欢:
  • StoreToFile 对象(开始将视频存储到文件中,同时发送视频流到 GUI 线程 以实时显示它存储的内容)
  • ReadFromFile对象(读取当前存储的文件并发送数据在GUI线程
  • 中显示
  • DelayedVideoStream 对象(将视频存储到缓冲区,并显示一个连续延迟查看过去 5 秒发生的事情)
  • ColorTracking 对象(跟踪颜色位置在图像中的位置)

谨致问候,感谢您抽出宝贵时间查看我的问题。

TLDR - 是一种将线程实现为类并将图像数据发送回 gui/主线程的结构,这是一种执行多线程程序的好方法?

最佳答案

性能方面,最好的方法是根本不直接处理线程,而是使用QtConcurrent::run。绘制简单地通过信号传递给 GUI 对象以显示的 QImages 是安全的。我写了a complete example展示这种方法。由于相关代码相邻,它导致一些非常简洁和易于理解的代码。

如果您确实想使用显式线程,那么不从 QThread 派生会容易得多,而是简单地将各种工作对象移动到它们的线程中,并让它们通过信号和槽进行通信。我有 a complete example对于这种方法也是如此。

关于multithreading - 对于多线程视频教练程序来说,这是一个合适的结构吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23286304/

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