OpenCV2.4.10 与 Qt

Posted

技术标签:

【中文标题】OpenCV2.4.10 与 Qt【英文标题】:OpenCV2.4.10 with Qt 【发布时间】:2015-06-04 17:53:50 【问题描述】:

我已经安装了 32 位 Qt 并为 OpenCV2.4.10 编译了 64 位二进制文​​件(来自源代码)。我有两个问题:

    我在安装 Qt 之前构建了 OpenCV 库。但据我了解,更多的是使用 Qt 风格的 UI,但没有必要与 Qt 交互。我应该重建 OpenCV 吗?

    当我尝试 64 位 Qt 时,它不起作用,因为 OpenCV 是用 VS 2013 编译的——它只有 32 位。所以我转向了 32 位 Qt,但它仍然给我以下形式的链接器错误: mainwindow.obj : 错误 LNK2019: 函数“public: __thiscall cv::Mat::~Mat(void )" (??1Mat@cv@@QAE@XZ) 我在 .pro 文件中添加了包含路径和库。 我是否因为 Qt 是 32 位而我正在使用 64 位 OpenCV 而出现错误?

我肯定需要使用 64 位 OpenCV。有没有办法让 Qt 与 OpenCV 交互?或者任何其他方式使用 C++/OpenCV 获得 GUI?

谢谢,

【问题讨论】:

【参考方案1】:

如果您考虑一下按下编译按钮时会发生什么,那么您就会明白为什么您的库不能有两个不同的架构集。

当您在 32 位中编译您的程序时,它的编码方式是 32 位(恰好是 64 位)架构可以理解并在底层硬件上运行。

但是 32 位硬件绝对不能运行 64 位架构集编码的程序,那么当您尝试在应用程序中包含两个不同的二进制文件时会发生什么? Visual Studio 如何知道如何将它们构建在一起?

可能值得看看this 和this 以便更好地了解。

现在回答:

我肯定需要使用 64 位 OpenCV。有没有办法让 Qt 与 OpenCV 交互?或者任何其他方式使用 C++/OpenCV 获得 GUI?

如果确定您需要 64 位 OpenCV,那么您将不得不找到使用 64 位 Qt 或不使用 Qt 的方法。 Here 是关于如何启动和运行它的一个很好的指南,您需要向 Visual Studio 添加一些额外的功能。

您当然可以使用 QtCreator,但如果您对 Visual Studio 更熟悉,可能值得付出额外的努力。

【讨论】:

以上是关于OpenCV2.4.10 与 Qt的主要内容,如果未能解决你的问题,请参考以下文章

OpenCV2.4.10 + VS2010开发环境配置

win7_64bit+VS2013+CUDA7.5+Opencv2.4.10配置Caffe环境

ubuntu16.04安装opencv2.4.10过程中的问题

VS2010+opencv2.4.10+gsl_1.8配置实现RobHess的SIFT程序

opencv2.4.10里怎么调用orb

Win7 64 + VS2010 + OpenCV2.4.10环境配置