在QT内使用Opencv,调试了好久总是出问题。
开始在pro文件内进行了opencv的配置,然后就是不能识别#include包含文件,后来不知道什么原因,神奇地 能够识别包含了。
可是,新的问题出现了,不能够识别cv函数,后来发现仅仅是不能识别opencv2.4函数,opencv1.0的函数还是可以识别的,使用IplImage能够正常显示图像。
后来不知道怎么回事,又神奇地可以识别opencv2.4.9函数了,可是此时不能显示图像,显示问题“qt opencv error assertion failed size.widht>0 && size.height>0”。
百度,发现需要使用:
IplImage *pImg=cvLoadImage("e:/image/face1.bmp",1); Mat image(pImg);
仍存在问题:如果试图直接显示图像,使用代码:
cvLoadImage("a.jpg",1);
仍显示无法发现图像。
ps:关闭当前工程后,再次打开又无法识别opencv函数了。
-------------------------------------------------------------------------------------------------
2014.5.18更新
opencv249,如果不进行编译,也是可以是运行opencv2.0以前的函数的。但是opencv2.0的一些函数会无法运行,因此需要编译。
直接下载qt mingw版本,然后使用cmake配合其自带的mingw进行编译。
注意:不需要自己下载mingw,qt自带的可以完成。
几个问题:
1.第一次编译没有选择with_qt。一边看别人的资料,一边编译。编译成功了,才发现这个问题。重新编译,就不行了。
后来重新下载了qt,配置了路径才好。可能是因为路径没有配置,而且注意,为了避免出现问题,最好重启系统。
2.注意,需要配置完成后最好使用Mat、IplImage分别测试一下。我第一次就是总是不行,使用IplImage才发现仅仅是不能识别Mat。
3.安装qt是要选择mingW。
4.imshow的标题无法正常显示(为乱码)已经解决。
5.文件需要使用绝对路径,相对路径仍旧不能识别。
路径的问题是因为没有注意区分工作路径、当前路径。找到编译文件,可以识别其特定的文件。
=================================================================================================
2014-5-21更新
在实验室机器上重新配置安装步骤:
1.下载opencv并安装。当前最新版本为249,直接使用的以前下载的248版本。
2.下载qt并安装。注意是mingw版本,不需要vs版本。
3.下载cmake,并对opencv的source文件进行编译。手动选择gcc、g++编译器。
配置好后,在生成前选择“with_QT"、"with_OPENGL".
4.进入cmd,到配置目标路径下运行Mingw32-make,此过程较长,需要半小时左右。
运行mingw32-make install,此过程较快。
5.复制opencv安装目下opencv/bulide/inlude目录到配置目标下。
6.添加目标目录/bin到系统path下。
7.创建qt工程,更改pro文件。
INCLUDEPATH+=e:\cv248\include\opencv\ e:\cv248\include\opencv2\ e:\cv248\include LIBS+=e:\cv248\lib\libopencv_calib3d248.dll.a\ e:\cv248\lib\libopencv_contrib248.dll.a\ e:\cv248\lib\libopencv_core248.dll.a\ e:\cv248\lib\libopencv_features2d248.dll.a\ e:\cv248\lib\libopencv_flann248.dll.a\ e:\cv248\lib\libopencv_gpu248.dll.a\ e:\cv248\lib\libopencv_highgui248.dll.a\ e:\cv248\lib\libopencv_imgproc248.dll.a\ e:\cv248\lib\libopencv_legacy248.dll.a\ e:\cv248\lib\libopencv_ml248.dll.a\ e:\cv248\lib\libopencv_objdetect248.dll.a\ e:\cv248\lib\libopencv_video248.dll.a
#include <QCoreApplication> #include <opencv2/core/core.hpp> #include <opencv2/highgui/highgui.hpp> using namespace cv; int main() { Mat image; image=imread("e:/a.jpg"); imshow("li",image); waitKey(); return 0; }
===================================================
参考资料:
1.openCV在VS2010配置完后,错误OpenCV Error: Assertion failed (size.width>0 && size.height>0)的解决方案
http://hi.baidu.com/meng_ling_hui/item/89294f0038e1c26dd45a11e2
2.OpenCV Error: Assertion Failed (size.width>0 && size.height>0) in unknown function
http://answers.opencv.org/question/18135/opencv-error-assertion-failed-sizewidth0/
3.QT creator+OpenCV2.4.2+MinGW 在windows下开发环境配置
http://www.cnblogs.com/liu-jun/archive/2012/09/26/Jacky_Liu.html
4.[OpenCV] -- win7下配置OpenCV的Qt开发环境
http://blog.csdn.net/qiurisuixiang/article/details/8665278
5.win7上qt5.1.1 opencv2.4.7 cmake2.8.12.1环境搭建(关键在环境变量)
http://blog.csdn.net/jiebaoabcabc/article/details/17097765