为什么使用QT编译OpenCV

Why compile OpenCV with QT?

本文关键字:编译 OpenCV QT 为什么      更新时间:2023-10-16

我正在使用Qt&一个新项目的OpenCV即将编译OpenCV以与MinGW合作。

有人认为我可以编译支持Qt的OpenCV库,但我真的不明白为什么要这么做。如果我不编译支持Qt的库,我仍然可以使用这样的方法将cv::mat路由到QImage

那么我错过了什么?使用OpenCV编译Qt有什么价值?

我在网上搜索过这样的页面,这个&这(来自搜索"为什么用Qt编译OpenCV")只向我展示了如何用Qt进行编译,而不是为什么。

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

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

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

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