Qt5.6.1+mingw32+opencv3.0使用成功

想给战车加个IPCamera,将摄像头的视频流传输到Qt写的上位机上,看到有前辈用Qt+opencv短短几行代码就搞定了,于是决定采用opencv。这里说一句题外话,其实图像处理LabView也可以做,而且做的也不错,有很多公司也在用LabView做机器视觉、3D显示之类。但是opencv强大的开源库和跨平台性还是吸引了最大受众。

言归正传,opencv库用的是Opencv3.0.0,下载地址http://opencv.org/downloads.html ,也可用SVN把它给checkout下来,但是本屌用惯了git,不想用SVN(其实用法都一样的啊)。规规矩矩的下了一个windows版本的opencv3.0.0.exe。运行--解压,解压出来的文件很大。

打开CMAKE:选择解压的文件夹opencv里sources文件夹,里面藏着CMAKE用来执行的CMakeLists.txt,然后点击configure

Qt5.6.1+mingw32+opencv3.0使用成功_第1张图片

因为我的Qt是使用mingw32编译器的,所以这里选择产生mingw的makefile

Qt5.6.1+mingw32+opencv3.0使用成功_第2张图片

将编译器文件夹配置好:

C:  X:/XXXX/Qt5.6.0\Tools\mingw492_32\bin\gcc.exe
C++:  X:/XXXX/Qt5.6.0\Tools\mingw492_32\bin\g++.exe

Qt5.6.1+mingw32+opencv3.0使用成功_第3张图片

finish后出现:

Qt5.6.1+mingw32+opencv3.0使用成功_第4张图片

不能勾选WITH_IPP,勾选WITH_OPENGL和WITH_QT

再次点击configure,直到红色消失以后,点击generate生成makefiles。

到 X:\XXXX\opencv\sources\cmake 下找到 OpenCVCompilerOptions.cmake

找到下面这句话注释掉他,以免发生错误。

add_extra_compiler_option(-Werror=non-virtual-dtor)
然后进入之前的生成目标文件夹,按下shift健+右键,打开命令调试窗口CMD 输入命令: mingw32-make

然后就开始编译了。大概30分钟过后,编译完成,输入mingw32-make install 安装,一会就完成。

Qt5.6.1+mingw32+opencv3.0使用成功_第5张图片


install完成后,将安装后的文件夹内的bin文件夹(里面含有动态库dll)加入到环境变量path并重启。


我们来新建一个QT工程,测试opencv是否ok,打开pro文件,加入下面的配置信息:

INCLUDEPATH += G:\opencv\opencv\cmake4\install\include\
INCLUDEPATH += G:\opencv\opencv\cmake4\install\include\opencv\
INCLUDEPATH += G:\opencv\opencv\cmake4\install\include\opencv2\
 
  
LIBS += G:\opencv\opencv\cmake4\lib\libopencv_*.a
 
  
HEADERS +=
 
  
SOURCES += \
    opencv_test.cpp
可以看到使用的是绝对路径,路径是之前安装完成后的文件夹内的include还有lib 使用绝对路径省去很多麻烦和bug,

到此,opencv3.0的函数都可以调用了。

#include 
#include 
#include 

#include 
using namespace cv;

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    Mat pic = imread("C:\\Users\\Administrator\\Desktop\\Board.jpg");
    if(pic.empty())
    {
        QMessageBox::warning(NULL,"Warning",QObject::tr("打开图片失败"));
    }
    else
    {
        imshow("board",pic);
        waitKey();
    }
//    IplImage *imag;
//    imag = cvLoadImage("f:/Board.jpg",1);
//    cvNamedWindow("JPG");
//    cvShowImage("JPG",imag);

    return 0;
}
实验证明,opencv可以用啦!不枉我编译了两个晚上,之前用2.4.8版本总是编译出x64的库,一定是makefile生成时出了问题,谨以此文纪念我入门opencv的第一天。

你可能感兴趣的:(Qt)