QT&OpenCV

摘自: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里已有编译好的dlllib文件,直接拿来用,结果此路不通。

2.只能自己重新编译OpenCV库了,用CMake,设置好OpenCV库的安装路径
  和将要生成的文件存放目录,点击Configure,弹出一个出错对话框,
  原因是找不到minGW的安装目录,于是将qtminGWbin路径加到环境变量中。

3. CMake完后,将其中的binlib目录复制到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!

你可能感兴趣的:(QT&OpenCV)