在此之前我用的mingw gcc4.4.0+Cmake3.6.0+OpenCV2.4.10进行编译的,那次报错了,没成功,然后拖了好多天,今天重新试验了一次,这次用的OpenCV2.4.9,莫名其妙的就编译通过了,很神奇。
原因具体还不清楚,查了一些相关的博客,有的说在Qt高版本下编译通过了,比如Qt5.0.2,我猜想可能和MinGW版本有关,因为高版本的qt带的mingw版本也较高,比如Qt5.0.2带的mingw版本为mingw4.7。
首先编译前要安装好所有工具:
1)mingw 4.4.0,我是之前配置qt的时候就装好了,我的qt版本是4.8.5的
2)OpenCV2.4.9 下载安装好
3)cmake3.6.0
(最好把Mingw和cmake的bin加在环境变量path中,也许自动会加进去,可以手动检查下)
然后打开Cmake,选好源代码source code路径和build目标路径
点击configure的时候会提醒让你选择generator,我猜这意思是编译器吧,不知道怎么翻译
然后选好再点configure
成功的话会出现圈的done说明,并且列表中一片红
这时候去勾选生成列表中的WITH_OPENGL和WITH_QT两项
然后再configure后红色会消失,然后点一下generate就会出现下面的generating done。
(具体为什么这么做我也懵逼)
这些步骤走完会在目标文件夹下MakeFile文件,可以自己去查看一下,这就可以用mingw编译了
然后准备在命令行下编译(我用了差不多40分钟,挺慢的,ps:可见有个高配置电脑的重要性)
然后执行mingw32-make install,这一步较快,两分钟左右
------------------------------------分割线------------------------------------------------------------------------------------------
然后是配置Qt开发环境,拷贝下面三个文件夹放进之前建的
D:\development_tools\opencv249\opencv_mingw_build 文件夹中
1)D:\development_tools\opencv249\opencv\build\include,这里面有opencv和opencv2两个文件夹,由于opencv_mingw_build下也有include文件,我就把opencv和opencv2两个文件夹拷贝到了它原来的文件夹里,保留了里面的文件
2)CMake目标路径下,MinGW编译后的bin目录,D:\development_tools\opencv249\opencv_mingw_build\bin
3)3)CMake目标路径下,MinGW编译后的lib目录,D:\development_tools\opencv249\opencv_mingw_build\lib
将MinGW编译后的bin目录,D:\development_tools\opencv249\opencv_mingw_build\bin目录添加到系统环境变量
然后是建立Qt工程,新建Qt控制台应用程序
在工程下的Pro文件中添加:
INCLUDEPATH+= D:\development_tools\opencv249\opencv_mingw_build\include\opencv\
D:\development_tools\opencv249\opencv_mingw_build\include\opencv2\
D:\development_tools\opencv249\opencv_mingw_build\include
LIBS += D:\development_tools\opencv249\opencv_mingw_build\lib\libopencv_gpu249.dll.a
LIBS += D:\development_tools\opencv249\opencv_mingw_build\lib\libopencv_highgui249.dll.a
LIBS += D:\development_tools\opencv249\opencv_mingw_build\lib\libopencv_imgproc249.dll.a
LIBS += D:\development_tools\opencv249\opencv_mingw_build\lib\libopencv_legacy249.dll.a
LIBS += D:\development_tools\opencv249\opencv_mingw_build\lib\libopencv_ml249.dll.a
LIBS += D:\development_tools\opencv249\opencv_mingw_build\lib\libopencv_nonfree249.dll.a
LIBS += D:\development_tools\opencv249\opencv_mingw_build\lib\libopencv_objdetect249.dll.a
LIBS += D:\development_tools\opencv249\opencv_mingw_build\lib\libopencv_ocl249.dll.a
LIBS += D:\development_tools\opencv249\opencv_mingw_build\lib\libopencv_objdetect249.dll.a
LIBS += D:\development_tools\opencv249\opencv_mingw_build\lib\libopencv_ml249.dll.a
LIBS += D:\development_tools\opencv249\opencv_mingw_build\lib\libopencv_imgproc249.dll.a
LIBS += D:\development_tools\opencv249\opencv_mingw_build\lib\libopencv_highgui249.dll.a
LIBS += D:\development_tools\opencv249\opencv_mingw_build\lib\libopencv_core249.dll.a
LIBS += D:\development_tools\opencv249\opencv_mingw_build\lib\libopencv_contrib249.dll.a
(网上有一种简单方法,添加:
LIBS += D:\development_tools\opencv249\opencv_mingw_build\lib
我这么添加的时候出差,看到有人成功,有人没成工,可以尝试)
main.cpp文件中添加:
#include "cv.h"
#include "cxcore.h"
#include "highgui.h"
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
IplImage*pImg;
pImg=cvLoadImage("E:/F Disk/QT_test/opencv_qt_test/1.jpg",1);
cvNamedWindow("Image",1);
cvShowImage("Image",pImg);
cvWaitKey(0);
cvDestroyWindow("Image");
cvReleaseImage(&pImg);
return a.exec();
}
运行后,就可以看到一个二次元萌妹了
参考博文:
http://blog.163.com/allegro_tyc/blog/static/337437682014102411829281/
http://blog.csdn.net/qiurisuixiang/article/details/8665278
http://blog.csdn.net/superdont/article/details/26007717