- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
您好,我目前正在从事一个视频教练程序的项目,用于录制和重放视频,以及显示延迟的实时视频,并通过颜色跟踪位置。
该软件在 linux 上运行,在 4 核 odroid 上,最初我开始使它成为多线程,并将线程实现为每个新类的一部分。这些线程中的每一个都处理它们自己的 gui 元素。
我后来发现我需要在主/gui 线程中显示所有 gui 元素/视频。之前我用过 opencv 和 boost。但似乎使用 Qt 可能是一个更好的主意,因为一些代码已经依赖于 QT 库。我目前是编程新手,对opencv、qt、threading都不太熟悉。
我的问题是: 这作为程序的结构是否相对合理,或者我现在计划如何做存在固有的错误?
主/GUI线程
按钮控件
谨致问候,感谢您抽出宝贵时间查看我的问题。
TLDR - 是一种将线程实现为类并将图像数据发送回 gui/主线程的结构,这是一种执行多线程程序的好方法?
最佳答案
性能方面,最好的方法是根本不直接处理线程,而是使用QtConcurrent::run
。绘制简单地通过信号传递给 GUI 对象以显示的 QImages
是安全的。我写了a complete example展示这种方法。由于相关代码相邻,它导致一些非常简洁和易于理解的代码。
如果您确实想使用显式线程,那么不从 QThread
派生会容易得多,而是简单地将各种工作对象移动到它们的线程中,并让它们通过信号和槽进行通信。我有 a complete example对于这种方法也是如此。
关于multithreading - 对于多线程视频教练程序来说,这是一个合适的结构吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23286304/
我是一名优秀的程序员,十分优秀!