【问题标题】:Why compile OpenCV with QT?为什么要用 QT 编译 OpenCV?
【发布时间】:2016-03-20 11:12:45
【问题描述】:

我正在一个新项目中使用 Qt 和 OpenCV,我即将编译 OpenCV 以与 MinGW 一起使用。

出现了一个想法,即我可以编译带有 Qt 支持的 OpenCV 库,但我真的不明白我为什么要这样做。如果我不编译支持 Qt 的库,我仍然可以使用 this 之类的方法将 cv::mat 路由到 QImage

那么我错过了什么?用 OpenCV 编译 Qt 提供了什么价值?

我在网上搜索过thisthisthis 之类的页面(从搜索“为什么用 Qt 编译 OpenCV”)只告诉我如何用 Qt 编译而不是为什么。

【问题讨论】:

  • 方便,可能。如果您真的想知道,请询问开发人员。

标签: c++ qt opencv


【解决方案1】:

您希望使用 Qt 编译 OpenCV 至少有两个原因:

  • 它为您提供imshow 中的缩放(鼠标滚轮)
  • 当鼠标悬停在该像素上时,它会为您提供像素 RGB 值

没有WITH_QT,你只有一个光秃秃的窗口,没有这些功能(你也会错过额外的按钮,比如保存图片),这使得图像处理调试更加乏味。

【讨论】:

    【解决方案2】:

    LE:误解了问题

    highgui 模块使用WITH_QT 选项使用qt 创建窗口,因此无论WITH_QT 选项如何设置,QImage 到cv::Mat 的转换和反之亦然。

    首先澄清一下:你不是用 Qt 编译 OpenCV,Qt 不是编译器,所以你不能用它编译任何东西。 Qt 是一个 C++ 库(之所以称为 framework,是因为它为您的应用程序源代码强加了一些设计规则,但基本上它是一个 C++ 库,就像 OpenCV 一样)。

    现在,在 C++ 世界* 中,要一起使用一些库,您需要使用相同的编译器(在某些情况下甚至是相同的编译器设置)构建这些库,因此必须决定要使用哪个 C++ 编译器并同时获取 Qt和使用相同编译器构建的 OpenCV 不一定由您构建,二进制文件可以从他们的网站获得。

    如果您想使用 MinGW,您将需要使用 MinGW 编译器构建 OpenCV,因为 OpenCV(至少版本 2410)仅在 Visual C++ 版本 10、11、12 中构建 - 这意味着 Visual Studio 2010、2012 和 2013 .

    因此,如果您决定使用某些 Visual Studio 版本,根据您选择的版本,您可能可以将 Qt 与 OpenCV 一起使用,而无需自己构建,但如果您想要 MinGW 编译器,则需要使用 MinGW 构建 OpenCV。

    *如果你的库只导出一个 C 接口,你可以摆脱它,但无论是 Qt 还是最新的 OpenCV 版本都不是这种情况。 //如果您想了解更多详情,请使用您最喜欢的互联网搜索引擎搜索:c++ binary compatibility 和或c++ abi

    【讨论】:

    • 我理解你的所有观点,虽然有效,但我认为你没有回答这个问题。它们是两个独立的库,在为 MinGW 编译 OpenCV 库时,无需勾选 cmake 窗口中的 qt 框即可一起使用。 (我已经用 MinGW 编译了 Qt)。那么当我勾选该框并说我想使用 Qt 为 MinGW 编译 OpenCV(WITH_QT 复选框)时,它实际上在做什么
    • 我的错,我没听懂这个问题。
    • 我不太清楚,也许在 kde 环境中你不想要 gtk(我不确定是否默认使用)或其他框架来创建 highgui 窗口。但这在您的情况下并不重要,因为您正在使用 Qt 创建 UI 而不会使用 highgui 模块
    • @MarkSetchell 让您能够控制在幕后使用什么小部件工具包(GTK、Qt、Cocoa、MFC 等)。从 highgui 开发人员的角度来看,在实现 highgui API 时也不要过分依赖单个库。
    • 我看过这里...docs.opencv.org/2.4/modules/highgui/doc/… 并且 Qt 允许您设置CV_GUI_EXPANDED,这会在imshow() 中启用一些额外的功能。
    猜你喜欢
    • 1970-01-01
    • 2018-12-21
    • 2013-04-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-22
    • 1970-01-01
    • 2010-12-23
    相关资源
    最近更新 更多