如何在QtCreator中连接opencv并使用Qt库
这个问题必须重复多次,但是它不起作用,有时候还是没有答案。 信息来源主要是这些
http://www.laganiere.name/opencvCookbook/chap1s1_2.shtml
http://www.youtube.com/watch?v=dgcXYQijV6c
这是我认为应该/可以做的事情的总和。 (现在它适用于我。)希望我从一开始就提到一切,目的是写一个非常明确的教程。
为QtCreator安装OpenCV
- 我已经安装了MS Visual Studio 2010 Professional。 (作为学生我有一个免费的许可证) – 我认为这不是必要的,只是一提
- 下载: Qt 5.0.1 for Windows 32位(MinGW 4.7,823 MB)
2.1 安装:警告,Qt使用的所有东西(例如OpenCV)必须位于名称中不包含空格的目录中。 – 即“程序文件”是错误的。 (但是我不想让不同的程序文件直接在C上累积,所以我只创build了一个“程序”文件夹,在这个文件夹中安装了所有重要的东西) - 下载: cmake-2.8.10.2-win32-x86.exe – 为所有用户安装(可以在Program Files中)
- 下载: OpenCV-2.4.0.exe,提取到: C:\ Programs \ opencv24 – 它会创build一个目录“opencv”; 添加另一个文件夹“opencv_bin”。 现在看起来像这样:
C:\程序\ opencv24 \ OpenCV的*
C:\程序\ opencv24 \ opencv_bin - 设置PATH环境variables ,以便有一个到MinGW编译器的链接。 例如C:\ Programs \ Qt \ Qt5.0.1 \ Tools \ MinGW \ bin;
- 启动cmake-gui.exe
6.1 源代码:设置OpenCV的默认目录; C:\程序\ opencv24 \ OpenCV的
6.2 二进制文件:设置opencv_bin目录; C:\程序\ copencv24 \ opencv_bin
6.3 点击configure:- selectMinGW Makefiles并指定本地编译器 ,点击下一步
- 字段C用于gcc.exe; C:/Programs/Qt/Qt5.0.1/Tools/MinGW/bin/gcc.exe
- Field C ++用于g ++。exe; C:/Programs/Qt/Qt5.0.1/Tools/MinGW/bin/g ++ EXE
现场fortran可以是空的,点击完成
6.4 将出现许多红色的线条在search字段中逐个input:WITH_QT,WITH_TBB,WITH_IPP,WITH_CUDA,CMAKE_BUILD_TYPE
- WITH_QT – 必须被选中。
- WITH_TBB,WITH_IPP,WITH_CUDA – 必须取消选中
- CMAKE_BUILD_TYPE – 点击并input文本“debugging”(不含引号)。
清除search栏中的文字。
6.5 点击configure并继续点击configure直到所有的红线都消失,然后点击generate并closures cmake-gui.exe
- 转到terminal(〜命令提示符) ,cd到构build目录(opencv_bin)并键入mingw32-make
- 当进程结束很长时间后,键入mingw32-make install
- 添加到pathvariables到QtCreator / bin的pathC:\ Programs \ Qt \ Qt5.0.1 \ Tools \ QtCreator \ bin
现在我已经在QtCreator中创build了一个新的控制台应用程序。
//cvHello.pro QT += core QT -= gui TARGET = cvHello CONFIG += console CONFIG -= app_bundle TEMPLATE = app INCLUDEPATH += C:/Programs/opencv24/opencv_bin2/install/include LIBS += "C:/Programs/opencv24/opencv_bin2/bin/*.dll" SOURCES += main.cpp OTHER_FILES += \ img.JPG
主要文件:
//main.cpp #include <iostream> #include "opencv2/core/core.hpp" #include "opencv2/highgui/highgui.hpp" #include "opencv/cv.h" using namespace std; int main() { cout << "Hello World!" << endl; cv::Mat mat; mat = cv::imread("img.JPG"); cvNamedWindow("hello"); cv::imshow("hello",mat); cvWaitKey(0); return 0; }
最后我开始快乐起来。 调整这个问题时,我不得不尝试所有的方法,如何定义LIBS。 手动列出它们,起初我写错了。
最终它是如何工作的:
LIBS += -LC:\\Programs\\opencv24\\opencv_bin2\\bin \ libopencv_core240d \ libopencv_highgui240d \ libopencv_imgproc240d \ libopencv_features2d240d \ libopencv_calib3d240d \
顺便说一句,如果我犯了语法错误,我很抱歉我的英文。 🙂