【发布时间】:2013-08-07 15:00:19
【问题描述】:
我有以下算法(工作):
- 从网络摄像头获取图像
- 过程图像
- 将图像发送到 GUI 并显示
GUI界面是用Qt编程的,所有的图像采集和处理都是用OpenCV完成的。涉及 3 个类,分别称为 Acquire、Process 和 Gui。
Acquire(继承自QObject)抓取图像并调用Process(不继承自QObject)进行图像处理。 Process 将结果返回给Acquire,Acquire 发出一个信号,Gui(继承自 QObject)将图像(Mat 格式)转换为 QImage 并绘制它。
我正在对Process 类进行更改,我希望获得视觉反馈。由于所有内容都在 Qt 的循环中执行,我无法使用 cv::namedWindow 和 cv::imshow 函数(什么都没有出现)。
问题是:有任何快速的方法可以进行可视化调试以了解 Process 内部发生的情况,而无需使 Process 和 Gui 成为朋友,或者使用信号/插槽机制或任何其他解决方案连接它们涉及到程序结构的重大变化?
【问题讨论】:
-
您的问题不清楚。您说过您可以将数据从 Process 发送到 Gui。为什么不能使用此功能发送需要显示的调试数据?
-
我没有。 Acquire 抓取图像,将其发送给 Process,Process 将结果返回给 Acquire,Acquire 发出由 Gui 捕获的 Signal,Gui 将处理后的图像绘制在屏幕上。无论如何,我将编辑问题以使其更清楚
-
您可以在Process中创建另一个QWidget,在单独的窗口中显示它并在其中放置调试信息。您还可以将调试信息写入文件。
-
Process 继承自 QObject 以发出信号(它不会在屏幕上绘制任何内容)。要创建所有需要的代码来绘制用于调试信息的小部件,需要进行许多代码更改(我希望使调试尽可能简单)。可以将图像保存到文件中......但我正在调试视频
-
您可以创建另一个类并将所有用于调试输出的代码放入其中。将 Process 连接到此类以发送调试信息。