我想构建一个 Qt 接口来控制相机采集。我想要什么: 在进入硬件通信之前,我正在测试一个控制“假相机”的 GUI,一个连续循环,如果启动,每 100 毫秒给出一个随机图像。图像采集在单独的线程中运行,以便用户可以与 GUI 进行交互。用户可以通过按钮开始和停止采集。我 想怎么做:我的第一次尝试是简单地 istanziate aQThread并调用该run()方法,然后该方法将包含一个无限循环,其中单个图像采集由 a 交错QThread.sleep(0.1)。我注意到在停止并重新启动线程后,程序开始滞后并在一段时间后崩溃。通过阅读周围的一些帖子和主要的Qt 网页,我了解到做我想做的事情的最好方法是:子类 aQObject来创建一个工人。实例化这个工作对象和一个QThread. 将工作线程移动到新线程。此外,按照这篇文章中的想法,我添加了一个QTimer对象来无限期地迭代线程内的工作线程,并且我实现了一个active标志,如果它设置为False. 这个解决方案在开始时似乎有效。我可以根据需要多次开始、停止和重新开始采集。问题:1) 当相机未获取时,CPU 总是占用相当多的资源(在我的情况下,大约为 30%,根据 Windows 任务管理器)。2)有时,在开始采集后,内存开始被填充,就像每个新图像都分配在新内存中(我猜它应该被覆盖),直到程序变得无响应然后崩溃。下图是发生这种情况时我在任务管理器中看到的:红色箭头对应于采集开始的时间。我哪里做错了?这是正确的方法吗?
添加回答
举报
0/150
提交
取消