QT内使用OpenCV

在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

8.在工程内显示图像示例。

#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;
}

9.查看效果。


===================================================

参考资料:

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

你可能感兴趣的:(QT内使用OpenCV)