摘自:http://blog.csdn.net/yvhvv?viewmode=contents
Qt Creator2.0.1 + OpenCV-2.3.1-win-superpack + win7 64
最近在做视频聊天室,两天了才把环境配置好,特记下此过程以备忘;
我的需求很简单,只要我能捕捉下摄像头的一帧,并转化成qt的图片格式就行了,
我决定选择使用OpenCV库,了解OpenCV库,并实现我的需求,没花我多少时间。
只是,就如我当初搭建Ogre3D环境一样,遇到了些许挫折,
1.我下载了OpenCV最新版的源码,安装到D:\后1G多,吓了我一跳,
里面乱七八遭的目录一大推,与网上存在的教程上大不一样。
发现\build\x64\mingw里已有编译好的dll与lib文件,直接拿来用,结果此路不通。
2.只能自己重新编译OpenCV库了,用CMake,设置好OpenCV库的安装路径
和将要生成的文件存放目录,点击Configure,弹出一个出错对话框,
原因是找不到minGW的安装目录,于是将qt中minGW的bin路径加到环境变量中。
3. CMake完后,将其中的bin和lib目录复制到D:\SDK\OpenCV中,其它的删掉。
将D:\opencv\build\include中的opencv2文件夹备份一份到D:\SDK\OpenCV中,
其它的没用删掉,还要将此目录再复制一份到我的qt项目中,原因很简单,
因为用INCLUDEPATH += 配制目录后,qt竟搜索到不到项下的子目录,
编译时qt给我整出一大排红色警报,说是头文件找不到,可郁闷了!
我不用#include"cv.h",而是直接#include "opencv.hpp",所以只需要opencv2文件夹即可。
4. 配置好头文件接下来该是配置lib连接库,要不然qt就报错未定义这个未定义那个了。
有个偷懒的方法,就是右键项目名,选择add existing files再把要添加的库文件全选上
完后打开.pro文件,路径全帮你输入完了,再把OTHER_FILES += \改成LIBS += \即可。
5. 然后就是设置bin目录了,我在环境变量中添加;D:\SDK\OpenCV\bin了。
一切都正常,只是结果有点莫名其妙
能通过qt编译,程序运行也正常,可就是在qt creator中不弹出来。
问过别人才知道,那确实属不正常,我把代码查了一遍又一遍,在网上搜了一次又一次,
未果。胡乱尝试各种方法,一次意外,我把bin目录里的dll文件拖到debug文件夹中,
把问题给解决了,我不是在环境变量中把bin目录的路径添加上去了吗?
怎么还找不到呢?这类问题真是很无语,不想纠缠,直接DESTDIR += D:/SDK/OpenCV/bin
问题解决了,不复制dll文件到debug了,末了附上.pro配置
INCLUDEPATH += opencv2
DESTDIR += D:/SDK/OpenCV/bin
LIBS += \
D:/SDK/OpenCV/lib/libopencv_video231.dll.a \
D:/SDK/OpenCV/lib/libopencv_objdetect231.dll.a \
D:/SDK/OpenCV/lib/libopencv_ml231.dll.a \
D:/SDK/OpenCV/lib/libopencv_legacy231.dll.a \
D:/SDK/OpenCV/lib/libopencv_imgproc231.dll.a \
D:/SDK/OpenCV/lib/libopencv_highgui231.dll.a \
D:/SDK/OpenCV/lib/libopencv_gpu231.dll.a \
D:/SDK/OpenCV/lib/libopencv_flann231.dll.a \
D:/SDK/OpenCV/lib/libopencv_features2d231.dll.a \
D:/SDK/OpenCV/lib/libopencv_core231.dll.a \
D:/SDK/OpenCV/lib/libopencv_contrib231.dll.a \
D:/SDK/OpenCV/lib/libopencv_calib3d231.dll.a
还有记得,在构造函数cvCaptureFromCAM(0);后
记得在析构函数中cvReleaseCapture(&m_capture);
否则进程中会有多出很多个程序。
Cannot retrieve debugging output!