今天,研究了下Qt 中如何应用OpenCV的问题。
与VC6.0环境下MFC只能应用OpenCV1.0版本不同,Qt 中可以应用最新的OpenCV2.4.x版本(又一个Qt 的好处)。
搭建环境:
操作系统:Win7
Qt版本:Qt4.8
OpenCV版本:OpenCV2.4.4 官网下载解压后竟然2.6G,可能与支持的平台如android,java等越来越多有关系。
首先,下载最新版的OpenCV版本,解压安装。
注意:因为Qt识别安装路径中的空格会出错,所以安装路径不要有空格,我的安装路径是C:\OpenCV2.4.4。
Qt中应用OpenCV方法有两个:
(1)在每个Qt工程的 .pro文件中添加头文件和lib文件。
参考网址:http://wenku.baidu.com/view/09c1010290c69ec3d5bb7581.html
http://www.opencv.org.cn/index.php/%E5%9C%A8Qt%E4%B8%AD%E4%BD%BF%E7%94%A8OpenCV%E5%BA%93
(2)在QtCreator\qt\mkspecs\win32-g++\qmake.conf,在load(qt_config) 语句前添加OpenCV的头文件和库。(注:很简单)
参考网址:http://opencv-extension-library.googlecode.com/svn/trunk/QtOpenCV/readme.txt
第一种方法:在每个Qt工程的 .pro文件中添加头文件和lib文件。(注:每新建一个工程都需要修改,很麻烦)
参考如下:(代码在.pro中位置随意,最前面或最后面都可以;安装路径不同的,只要改一下自己的正确安装路径即可)
INCLUDEPATH += C:\OpenCV2.4.4\opencv\build\include\opencv2\ C:\OpenCV2.4.4\opencv\build\include\opencv\ C:\OpenCV2.4.4\opencv\build\include CONFIG(debug,debug|release) { LIBS += C:\OpenCV2.4.4\opencv\build\x86\vc10\lib\opencv_calib3d244.lib\ C:\OpenCV2.4.4\opencv\build\x86\vc10\lib\opencv_contrib244.lib\ C:\OpenCV2.4.4\opencv\build\x86\vc10\lib\opencv_core244.lib\ C:\OpenCV2.4.4\opencv\build\x86\vc10\lib\opencv_features2d244.lib\ C:\OpenCV2.4.4\opencv\build\x86\vc10\lib\opencv_flann244.lib\ C:\OpenCV2.4.4\opencv\build\x86\vc10\lib\opencv_gpu244.lib\ C:\OpenCV2.4.4\opencv\build\x86\vc10\lib\opencv_highgui244.lib\ C:\OpenCV2.4.4\opencv\build\x86\vc10\lib\opencv_imgproc244.lib\ C:\OpenCV2.4.4\opencv\build\x86\vc10\lib\opencv_legacy244.lib\ C:\OpenCV2.4.4\opencv\build\x86\vc10\lib\opencv_ml244.lib\ C:\OpenCV2.4.4\opencv\build\x86\vc10\lib\opencv_objdetect244.lib\ C:\OpenCV2.4.4\opencv\build\x86\vc10\lib\opencv_ts244.lib\ C:\OpenCV2.4.4\opencv\build\x86\vc10\lib\opencv_video244.lib\ }
第二种方法:在Qt目录mkspecs\win32-g++\qmake.conf中,在load(qt_config) 语句前添加OpenCV的头文件和库。(此方法不用每次都修改,改一次,一劳永逸)但是,此方法在写代码时,不提示函数,只是能够运行,这一点不太好!
用记事本打开qmake.conf。楼主的qmake.conf目录是D:\Qt\4.8.4\mkspecs\win32-g++。
添加代码如下:(楼主将代码添加在文件最后面)
QMAKE_INCDIR += C:\OpenCV2.4.4\opencv\build\include\opencv2\ C:\OpenCV2.4.4\opencv\build\include\opencv\ C:\OpenCV2.4.4\opencv\build\include QMAKE_LIBS += C:\OpenCV2.4.4\opencv\build\x86\vc10\lib\opencv_calib3d244.lib\ C:\OpenCV2.4.4\opencv\build\x86\vc10\lib\opencv_contrib244.lib\ C:\OpenCV2.4.4\opencv\build\x86\vc10\lib\opencv_core244.lib\ C:\OpenCV2.4.4\opencv\build\x86\vc10\lib\opencv_features2d244.lib\ C:\OpenCV2.4.4\opencv\build\x86\vc10\lib\opencv_flann244.lib\ C:\OpenCV2.4.4\opencv\build\x86\vc10\lib\opencv_gpu244.lib\ C:\OpenCV2.4.4\opencv\build\x86\vc10\lib\opencv_highgui244.lib\ C:\OpenCV2.4.4\opencv\build\x86\vc10\lib\opencv_imgproc244.lib\ C:\OpenCV2.4.4\opencv\build\x86\vc10\lib\opencv_legacy244.lib\ C:\OpenCV2.4.4\opencv\build\x86\vc10\lib\opencv_ml244.lib\ C:\OpenCV2.4.4\opencv\build\x86\vc10\lib\opencv_objdetect244.lib\ C:\OpenCV2.4.4\opencv\build\x86\vc10\lib\opencv_ts244.lib\ C:\OpenCV2.4.4\opencv\build\x86\vc10\lib\opencv_video244.lib\
以上两种方法,注意代码的写法。
之后,在程序中添加相应的 .h文件,测试一下代码吧!什么?程序异常终止!
是的,还有最重要的一点那就是:还没有配置.dll文件呢!程序运行会需要dll库。
方法:一,在环境变量中,配置 path 加OpenCV中bin路径。(此方法楼主试验,debug中执行.exe可行,但在工程运行项目中却不行,不知为什么?)
二,在将OpenCV安装路径下所有的.dll文件拷贝到C:\Windows\System32目录下。
楼主的OpenCV下dll文件目录:C:\OpenCV2.4.4\opencv\build\x86\vc10\bin。(此方法好,需要什么dll就拷贝进什么,为以后方便就全拷贝进去)
PS:网上有人说,先自己编译什么的,楼主不知什么意思,不是有自带的现成的lib和dll文件吗?