zoukankan      html  css  js  c++  java
  • Win10+QT5.7.1搭建opencv开发环境

    一、准备工作:

    1下载Qt5.7.1软件qt-opensource-windows-x86-mingw530-5.7.1.exe(http://download.qt.io/official_releases/qt/5.7/5.7.1/)

    2.下载opencv3.1 OpenCV for Windows(http://opencv.org/downloads.html)

    3.下载Cmake3.7.2 cmake-3.7.2-win64-x64.msi(https://cmake.org/download/)

     二、软件安装

    1.qt软件安装与配置

    默认安装即可,然后设置环境变量,在系统环境变量path中添加:

    C:\Qt\Qt5.7.1\5.7\mingw53_32\bin;C:\Qt\Qt5.7.1\5.7\mingw53_32\bin

    2.CMake安装和配置

    默认安装,注意在安装过程中勾选“为所有用户添加环境变量”:Add CMake to the system PATH for all users 。

    3.opencv安装

    opencv的安装实际上是解压,解压到用户指定位置,在这里我的目录是D:\Program Files\opencv

    三、opencv库的编译

    1.配置CMake编译条件

    打开CMake(cmake-gui)。

    在下图中1处,选择源码目录,如:D:/Program Files/opencv/sources 。

    在下图中2处,选择编译输出目录,如 D:/Program Files/opencv/mingw530 。

    然后点击3处Configure,进行配置

    在下图中1处,选择MinGW Makefiles;在图中2处选择,Special native compilers;然后点击Next

    配置编译器,在下图1处,C编译器选择C:\Qt\Qt5.7.1\Tools\mingw530_32\bin\gcc.exe;

    在下图2处,C++编译器选择C:\Qt\Qt5.7.1\Tools\mingw530_32\bin\g++.exe

    Fortran不用填写,然后点击finish。注意:此过程保证网络畅通,因为需要下载几个文件。

    等待一会儿后,会有一堆红色出现,勾选WITH_QTWITH_OPENGL不能勾选WITH_IPP(默认不勾选),再次点击configure。

    若仍有红色出现,再次点击configure直至红色消失。最后,点击Generate按钮,完成后即可关闭CMake。

    2.编译

    在编译之前,在目录D:\Program Files\opencv-3.1.0\cmake\下找到OpenCVCompilerOptions.cmake文件。

    打开文件,找到add_extra_compiler_option(-Werror=non-virtual-dtor)

    将它注释掉,变成:

    #add_extra_compiler_option(-Werror=non-virtual-dtor)

    然后按住快捷键win+R,运行cmd

    进入编译输出目录 D:\Program Files\opencv\mingw530(也可以,按住shift同时右键,点击“在此处打开命令窗口”。)

    然后输入:mingw32-make命令,编译opencv,此过程时间较长,电脑编译了一个多小时。 

    直到编译结束。然后输入命令:mingw32-make install ,大约一到两分钟就安装完成了。

    四、精简编译后的opencv库文件

    编译完成后会发现目标文件夹有一个多G大小,无需担心,我们只需要其中的一部分。

    网上很多教程都说要:[保留“bin”、“lib”文件夹,再将原始OpenCV库中的“include”拷贝过来]。这里与其他教程不同的是,我建议只保留 install 文件夹,其他都可以删除。

    详细解释如下;观察install目录结构:

    fig5

    小技巧:想生成目录结构到txt文件,可在cmd中转到某目录,输入tree /f > list.txt

    其中,etc中包含两类已经训练好的分类器,分为Haar特征和LBP特征,可以用在人脸识别等程序中;include中是需要的头文件;x86/mingw中则包含bin和lib两个文件夹,其中分别是动态链接库和静态链接库。因此install中已经包含了所有需要的文件。

    而install/x86/mingw中的bin和lib与上层目录中的bin和lib有什么区别呢?观察可以发现,install中的bin和lib中少了很多文件名中有“pref”和“test”的文件,这些文件实际上是不需要的。因此只保留install文件夹是最不浪费空间的做法。

    删除其他无用的文件夹后,我们所需的库文件只有62.3 MB,压缩一下只有14 MB,这已经很小了。我将制作好的库文件上传到了云盘中,需要的话可以在最下方下载。

    五.Qt Creator 中工程文件的配置

    首先将编译好的库添加进环境变量,如 D:\opencv_mingw530\install\x86\mingw\bin ,如不添加则会出现程序编译通过但运行时提示“程序异常结束”的问题。

    小提示:每次添加或删除环境变量后,都要重启Qt Creator才能生效。

    打开Qt Creator,新建工程或者在已有工程文件中打开.pro文件,添加包含头文件的语句:

    INCLUDEPATH += D:\opencv_mingw530\install\include

    接下来,如果你想使用动态链接库,则再添加:

    LIBS += -L D:\opencv_mingw530\install\x86\mingw\bin\libopencv_*.dll

    而如果你想使用静态连接库,则要添加:

    LIBS += -L D:\opencv_mingw\install\x86\mingw\lib\libopencv_*.a

    这里都是使用了“*”包含了所有的链接库,如果想只用一部分则可以这样输入:

    LIBS += -L D:\opencv_mingw530\install\x86\mingw\bin\libopencv_calib3d320.dll \
                                                    libopencv_core320.dll \
                                                    ...

    小提示:带空格的库路径是不能直接使用的,需要按如下格式输入:

    INCLUDEPATH += \$\$quote(D:\opencv_mingw530\install\include)

    LIBS += -L \$\$quote(D:\opencv_mingw530\install\x86\mingw\bin\libopencv_*.dll)

    在工程上右键点击执行QMake 。

    qmake

    之后进行正常的编译运行即可。

    6. 示例程序

    网络上的教程到最后示例程序这一步时,很多都是将Qt的原有结构删除,直接给一个opencv的简单程序就完事儿,一般都是显示一张图片。

    我这里高级一点,给一个调用摄像头并显示图像的简单示例。这个程序摘自毛星云(浅墨)的《OpenCV3编程入门》。

    #include <opencv2/opencv.hpp>
    using namespace cv;
    int main()
    {
        //【1】从摄像头读入视频
        VideoCapture capture(0);
        //【2】循环显示每一帧
        while(1){
            Mat frame;  //定义一个Mat变量,用于存储每一帧的图像
            capture>>frame;  //读取当前帧
            imshow("video",frame);  //显示当前帧
            waitKey(30);  //延时30ms
        }
        return 0;
    }

    主要参考博客:http://www.cnblogs.com/howlclat/p/6433097.html

    http://blog.sina.com.cn/s/blog_92bfe91b0102vvvn.html

  • 相关阅读:
    ansible——playbook conditions条件判断
    ansible——playbook lookups从插件加载变量
    ansible——playbook循环
    lombok注解
    集合与集合取笛卡尔积
    List排列组合
    synchronized初识
    java IO与NIO
    文件I/O和标准I/O
    双数据源配置
  • 原文地址:https://www.cnblogs.com/TooyLee/p/6438070.html
Copyright © 2011-2022 走看看