为什么要用QT编译OpenCV?

GPP*_*PPK 7 c++ qt opencv

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

我想到可以在Qt支持下编译OpenCV库,但是我并不真正理解为什么要这么做。如果我不编译使用Qt支持库我还能路线cv::matQImage使用类似的方法这样

那我想念什么呢?使用OpenCV编译Qt有什么价值?

我已经在网上搜索和页面像这样这个这个(来自搜索“为什么使用Qt编译OpenCV的”)只教我怎么用Qt和不为什么进行编译。

Zla*_*mir 6

LE:误解了问题

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

首先需要澄清一些:你不是用 Qt 编译 OpenCV,Qt 不是编译器,所以你不能用它编译任何东西。Qt 是一个 C++ 库(之所以称为 A 是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

  • 我的错,我没听懂这个问题。 (2认同)
  • 我不太清楚,也许在 kde 环境中你不需要 gtk (我不确定默认情况下是否使用它)或其他框架来创建 highgui 窗口。但这对你来说并不重要,因为你正在使用 Qt 创建 UI 并且不会使用 highgui 模块 (2认同)
  • @MarkSetcell 它使您能够控制在幕后使用哪些小部件工具包(GTK、Qt、Cocoa、MFC 等)。从 highgui 开发人员的角度来看,在实现 highgui API 时,也不要过多依赖单个库。 (2认同)
  • 我在这里看了一下... http://docs.opencv.org/2.4/modules/highgui/doc/user_interface.html#imshow 和 Qt 允许您设置 `CV_GUI_EXPANDED` ,它可以在 `imshow() 中启用一些额外的功能`。 (2认同)

PJ1*_*127 5

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

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

如果没有WITH_QT,您只有一个光秃秃的窗口,没有这些功能(并且您还会错过额外的按钮,例如“保存图片”),这使得图像处理调试更加繁琐。