美文网首页OpenCv
(一)MinGW-w64编译OpenCV-3.4.5

(一)MinGW-w64编译OpenCV-3.4.5

作者: Parker2019 | 来源:发表于2019-07-17 19:37 被阅读51次

    OpenCV-3.4.5的编译(MinGW-w64)

    废话不多说,直接上地址:

    说明:

    1、MinGW-w64编译器进入下载页面后下拉选择x86_64-posix-seh(64位系统适用,32位请选择i686-posix-sjlj),版本建议选择MinGW-W64 GCC-8.1.0,不要太往前,C++的一些新特性在旧的编译器里可能不适用,导致编译的时候会报错。还有就是一定要选择POSIX版本,下载win32版本编译的时候会让你怀疑人生。至于CMake,也是下载对应系统位数的包。下载压缩包(.zip)可以直接使用。
    2、博主目前在Windows上面只编译成功过Opencv-4.0.1和OpenCV-3.4.5,其他版本的OpenCV没尝试过,在Github上面有一个CSDN博主会不定期的上传已经编译好的包供直接使用。他的blog里面还包含一些编译时候常见错误及处理办法,可供参考。
    Portal:https://github.com/huihut/OpenCV-MinGW-Build

    都下载完成后,就可开始编(zhe)译(teng)了。

    首先,请新建一个build空目录。

    目录结构

    打开CMake目录,进入bin中打开cmake-gui.exe。


    CMake1

    第一项填源码目录,第二项填编译目录。然后点Configure。


    CMake2

    下拉菜单选择MinGW Makefiles。这一步需要提前配置MinGW-w64的环境变量,把编译器目录中bin子目录加入系统环境变量。(可以在cmd/powershell中输入gcc -v,有输出则配置环境变量成功。)

    cmd输出

    读条过程可能会有点长,因为需要联网下载一些东西。


    CMake3
    • 配置完成后会出现一大堆红色的东西,这时在Search中输入extra会出现OPENCV_EXTRA_MODULES_PATH
      在Value中选择opencv_contrib-3.4.5目录下的modules子目录。

    • 清空Search,输入nonfree,勾选OPENCV_ENABLE_NONFREE

    • 清空Search,输入world,勾选BUILD_OPENCV_WORLD

    • 直到没有红色内容出现,点击Genearate,会在build目录中生成Makefile

    • 如果想要弄清楚每个NAME下面的参数是什么意思,可以去问百度或谷歌或CSDN或Stack Overflow。一般情况下只需要开启上面参数,当然如果想编译python和java版的小伙伴们一定要记着打开BUILD_opencv_pythonBUILD_JAVA,并确定python和java jdk已经在系统环境变量目录中。此外OpenCV支持和某些库混合编译,比如CUDATBB等,如果有需要编译这些内容务必勾选与之相关的项目。

      Makefile

    第二步,进入cmd/powershell。

    • cdbuild目录。
    • 输入mingw32-make,这里有个加快编译的办法,就是启动多线程编译,在这条指令后面加上-j(数字),数字多少代表线程多少。但请注意最好不要超过最大线程,不然编译时会报错。

    等待编译完成。编译耗时取决于电脑配置和线程数量多少。


    编译过程中
    • 这一步是最容易出现问题的地方,如果有很多报错而终止编译请检查编译器问题。(PS:不得已的情况下不要去修改源码,否则可能报更多的错。)

    • 出现了问题也不要着急,这个时候最重要的就是来杯饮品压压惊。然后当然是请教度娘或者google或者Stack OverFlow或者CSDN啦。


      编译完成
    • 完成编译后,输入mingw32-make install,将OpenCV编译好的东西安装至build目录下install子目录中。

      安装过程
    • install目录

      install目录

    至此编译工作完成。

    如何链接呢,见下一篇文章吧。:)

    相关文章

      网友评论

        本文标题:(一)MinGW-w64编译OpenCV-3.4.5

        本文链接:https://www.haomeiwen.com/subject/fkgclctx.html