【问题标题】:Display opencv frames in a window with button and text control在带有按钮和文本控件的窗口中显示 opencv 框架
【发布时间】:2011-08-29 07:32:50
【问题描述】:

我想问你一些关于我想解决的问题的信息。

目前,我有两个 opencv 应用程序:

  • 应用程序 A:我使用两种算法跟踪对象,每次我将帧保存在图像文件中,并使用我写入的一些命令控制应用程序行为外壳

  • 应用程序 B:我有一个循环,每次读取图像文件并显示它 因此,我将这两个应用程序一起启动,以便使用 appA 跟踪对象并使用 appB 显示结果,appB 每次都会读取 appA 在硬盘中保存的帧。

我想将应用程序 B 集成到应用程序 A 中以显示一个窗口(例如:http://lnx.mangaitalia.net/window.jpg),以便在第一个区域显示图像并使用按钮来提供目前我在 shell 中编写的命令

你认为用 Qt 或 opengl 或 wxwidgets 在一个区域中显示框架是可能的吗?

哪种解决方案更好,更容易应用?

目前,我的应用B很简单:

 while(1)
{
    Mat img=imread("result.jpg",1);
    if(!img.empty())
        imshow("HOG",img);
    if(waitKey(200)==27) break;
}

我想在一个也有一些按钮的窗口中显示这些框架。 特别是,正如您在这篇文章的附加图像中看到的那样,我想创建一个分为两部分的窗口:第一部分显示从 opencv 相机捕获的帧,第二部分(或区域)有一些按钮( B1, B2, B3..) 用户可以按下以控制应用程序行为。 (目前,我在 appA 中使用 switch/case 来捕获键盘键)

有一些基于类似于我想做的模板的示例? (就像我之前告诉过的 jpg 图片:http://lnx.mangaitalia.net/window.jpg

【问题讨论】:

    标签: qt opengl opencv wxwidgets glut


    【解决方案1】:

    我建议您只使用 OpenCV 中的内置 GUI:highgui。它具有键盘/鼠标 IO、带有消息循环的窗口控制、按钮、滑块等。无需对 cv 图像进行任何转换即可显示它们。

    看看:http://dasl.mem.drexel.edu/~noahKuntz/openCVTut3.html(是为旧的IplImage风格的CV写的,不过C++接口差不多,用cv::imshow画图)

    另外,这里是 C++ 风格界面的documentation

    还可以在 Qt 中将您的 CV 图像转换为 QImage 并这样做……您应该能够在 Google 上找到解决方案。

    【讨论】:

    • 非常感谢您的建议!我已阅读文档并正在使用它!
    【解决方案2】:

    有一些例子可以实现这一点。

    http://larryo.org/work/information/wxopencv/index.html

    基本上你想做的是:

    • 从您的相机中捕捉一帧
    • 处理图像
    • 使用 cvConvertImage 将其转换为 wxImage 可以读取的格式
    • 将此图像绘制到 wxCanvas 上

    对于 GUI 部分,您需要创建一个 wxFrame 或 wxWindow,在适当的位置放置一些尺寸调整器和按钮。

    所以基本上做一个框架,在框架上放一个尺寸器,然后在尺寸器中放一个面板。 接下来在面板上制作一个垂直尺寸器。首先在垂直尺寸器中添加一个wxCanvas,然后在垂直尺寸器中放置一个水平尺寸器。现在向水平尺寸调整器添加 3 个按钮,您就拥有了面板。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-09
      相关资源
      最近更新 更多