我正在使用Qt&关于新项目的OpenCV即将编译OpenCV以与MinGW一起使用。
出现了一个想法,我可以用Qt支持编译OpenCV库,但我真的不明白为什么我会这样做。如果我没有使用Qt支持编译库,我仍然可以使用this之类的方法将cv::mat
路由到QImage
。
那我错过了什么?使用OpenCV编译Qt时提供了什么价值?
我在网上搜索了this,this和& this(来自搜索"为什么用Qt编译OpenCV")只显示如何用Qt编译而不是为什么。
答案 0 :(得分:3)
LE:误解了这个问题
WITH_QT选项由highgui模块用于使用qt创建窗口,因此无论如何设置WITH_QT选项,QImage到cv :: Mat转换(反之亦然)都会有效。
<击>
首先澄清一下:你没有用Qt编译OpenCV,Qt不是编译器所以你不能用它编译任何东西。
Qt是一个C ++库(它叫做framework
因为它为你的应用程序源代码设计了一些规则,但基本上它是一个C ++库,就像OpenCV一样。)
现在,在C ++ world *中使用一些库需要使用相同的编译器(在某些情况下甚至是相同的编译器设置)构建这些库,因此必须决定要使用哪个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
答案 1 :(得分:1)
出于至少两个原因,您希望使用Qt编译OpenCV:
imshow
中的缩放(鼠标滚轮)如果没有WITH_QT
,您将只有一个光秃秃的窗口,没有任何这些功能(而且您还会错过额外的按钮,例如保存图片),这会使图像处理调试更加繁琐。