这是我在百度空间里面发的文章,本来想一直用下去的,结果出现了问题,写好文章之后发不了,很担心会丢失,所以跑到CSDN来,这是发表于3-27的那篇。网址如下:
http://hi.baidu.com/song121321/item/5082f380c48052df5e0ec198
这几天搭配opencv+qt的环境,由于是第一次接触,期间遇到各种问题,现在将所遇问题总结如下:
1 需要工具:我是用的是opencv2.4.4,qt5.2.1,Cmake的版本是2.8.12.1,环境是win7旗舰版32位操作系统
2 关于各种软件的安装以及配置,具体过程不细说了,网络上有很多的版本,推荐这个http://wenku.baidu.com/link?url=sFZFR1qIDAJFvgI2E_XFlSU0PbTHFvui6KwatJ_-S-NV8AYT8hniH8P-aUzHRTgfOOdFEYTGc5Ml1SU-JzSdEgtXkdAHtW3XiSIaVHf3dx3,这里虽然是64位的,但是我用32位的亲测可行。
3 关于上述文档,有几点需要强调
1)文章中说勾选WITH_OPENGL 和WITH_QT 两个选项,这里可以不用选择WITH_OPENGL那个,因为就算你添加了也会说NOT_FOUND的错误,而且我们这里也用不到这个。
2)WITH_QT 是一定要选的,当点击configure 按钮之后会出现以下的红色选项如下图:
注意我标记的qmake那条(最重要的),如果也不对,就是环境变量的事情了,你需要检查环境变量,然后将qmake的路径写进去。另外两条如果不加修改,查看下面的输出信息会发现这样的warning
所以,给这两个加上路径,我的路径是这样的C:\Qt\Qt5.2.1\5.2.1\mingw48_32\bin\Qt5Cored.dll.
在之后基本就没问题了,点击generate生成就可以了。
4,关于配置问题:
1),问题描述:C:\OpenCV\include\opencv\cv.h:63: error: opencv2/core/core_c.h: No such file or directory
#include "opencv2/core/core_c.h"
分析:查看你的pro文件是不是以下两个图片所示:
而且当你把鼠标放在头文件那里的时候,还是会出现找到头文件,但是一编译就会出错
点击错误后,会跳转到opencv的头文件中,貌似要修改源码???
解决办法:此处需要将include放在第一个,具体原因不明,或许是系统默认第一个是根目录吧,修改后的pro文件如下:
2),:-1: error: cannot find C:\OpenCV\lib: Permission denied
collect2.exe:-1: error: error: ld returned 1 exit status
分析:查看pro文件,在LIBS那个地方是不是只写了一句。LIBS+=C:\OpenCV\lib\
解决方法:不要偷懒,这个全部写上。
3)史上最坑爹的错误:D:\project\demo\main.cpp:10: error: undefined reference to `cvLoadImage'
D:\project\demo\main.cpp:12: error: undefined reference to `cvNamedWindow'
D:\project\demo\main.cpp:14: error: undefined reference to `cvShowImage' 。。。and so on
此问题曾经让我几近崩溃,整整弄了5天。
分析:查看编译窗口的输出信息:会发现命令是这样的:g++ -Wl,-subsystem,console -mthreads -o debug\demo.exe debug/main.o-LC:\Qt\Qt5.2.1\5.2.1\mingw48_32\lib -lQt5Cored
而正常的编译时没有这个-L的,所以一定是这里的问题!
解决方法:其实方法很简单,其实就是一个空格的事儿,将.a文件之间的空行去掉就行,这里要经过多次的清除,可能是本身是qtcreator的BUG吧,一个空格会解释成-L的意义,以下是错误问题和正确的处理之后的效果图。
错误pro文件
解释成的错误命令行
正确修改(.a文件之间把空格都去掉)与INCLUDEPATH之间要留一行
正确的编译行
4)当一切就绪,可恶的 undefined reference to `cvLoadImage' 问题也不见了的时候,点击运行,结果只出现了黑框,图片却没有出现。
解决方法:第一,重启你的QTCtreator,在打开的时候就会出现了
第二,如果还没出现,仔细检查图片路径。
万事开头难,到现在为止,我所遇到的问题就这些,空格那个基本没有资料可查,完全是一点点看出来的,将经验教训写下来,希望能帮到初学的同学吧,欢迎大家补充。