zoukankan      html  css  js  c++  java
  • CMake编译OpenCV

    使用CMake来编译OpenCV,以匹配自己使用的VS版本。

    主要有两步:

    1. CMake编译OpenCV源码得到OpenCV.sln工程文件。
    2. VS编译OpenCV.sln。

    以最新的cmake-3.16.0-rc1-win64-x64、opencv-3.4.8、opencv_contrib-3.4.8为例,编译适合VS2013的x64版本。

    【下载软件】解压后我都放到了D盘根目录

    1、cmake-3.16.0-rc1-win64-x64.zip,解压直接可用

    2、opencv-3.4.8源码文件Sources,解压即可

    3、contrib库(下载opencv同版本,注意下边要点击选项卡选版本,别直接下载)

    4.1、安装python(参考此链接1、2步),即便纯使用C++,也建议把python装上,深度学习必不可少。

    4.2、安装numpy,打开cmd,输入 pip install numpy

    【编译步骤】

    1、cmake编译opencv源文件,生成OpenCV.sln。

    以管理员身份运行D:cmake-3.16.0-rc1-win64-x64cmake-gui.exe

    单击一次Configure后,Search里筛选信息,带test的都不勾选,带java的都不勾选,其他参考上图红字。

    留意下是否有BUILD_opencv_python3,如果没有说明此版本的opencv不支持python,如opencv4.2。

    多次Configure后,打开D:1CMakeDownloadLog.txt,如果里边有https开头的东西,说明有文件下载失败。那么需要自己复制链接到迅雷下载。

    定位CMakeDownloadLog.txt中出现copy的地方,把下载的文件放到对应的紧挨着copy的那个目录中,它会自动把文件重命名(MD5码-原名)放到相应的地方的。

    如果没有出现copy,那么根据提示如D:/source/opencv-3.4.9/.cache/ippicv/1d222685246896fe089f88b8858e4b2f-ippicv_2019_win_intel64_20180723_general.zip,就把下载的ippicv文件放到它指定的目录,文件名用它指定的。

    删掉D:1CMakeDownloadLog.txt,再次Configure,查看自动生成的CMakeDownloadLog.txt内容,没有https开头的东西,说明所有文件全部成功。单击Generate

    2、VS打开OpenCV.sln,菜单栏:生成——批生成,勾选下图四个,生成,等待完成即可。

    最终编译的结果在自动生成的D:1install文件夹中(适用于C++)。把install文件夹中include、x64文件夹拷贝到在D盘新建的文件夹opencv中,其他文件可以统统删除。

    之后参考博文一次配置永久使用vs2013配置opencv2.4.13(txt中复制粘贴即可,一次配置永久使用),注意没有build目录了,找自己对应的目录即可。

    【python说明】适用于python的文件cv2.cp37-win_amd64.pyd,会自动出现在你安装的python目录中D:PythonPython37Libsite-packagescv2python-3.7。

    注意会提醒——无法打开文件“python37_d.lib”,debug都会出现此问题,无关紧要,因为成功生成了release版(cmake生成目录D:1libpython3Release,若*.pyd没有出现在你的python目录中,就自己拷贝过去)。

    【实战】https://blog.csdn.net/nnnnnnnnnnnny/article/details/52182091

    【可能出现的问题解决方案】

    问题都出现在VS编译OpenCV.sln阶段,而且都是quirc.c、quirc.h引起的。

    1、如果出现下图inline相关的错误,在解决方案资源管理器中打开quirc.h,在最顶部加入如下代码后,重新第2步。

     

    #if defined(WIN32) && !defined(__cplusplus)
    #define inline __inline
    #endif

    2、出现size_t(quirc.c中)有关的错误,打开quirc.c(上图箭头下方的Source Files中能找到),把size_t改成如下unsigned long long。重新第2步。

        unsigned long long olddim = q->w * q->h;
        unsigned long long newdim = w * h;
        unsigned long long min = (olddim < newdim ? olddim : newdim);
  • 相关阅读:
    前端如何进阶架构师
    NPOI使用记录
    ArcGis 中空间数据的插入与更新
    (转载).net 缓存处理
    ASP.NET(c#)实现重定向的三种方法的总结
    数据库关联表之间的更新语句
    C#net多线程多文件压缩下载
    关于写文件流的情况
    C# Class获取项目的绝对路径
    C# .net中DatailsView的JS简易版
  • 原文地址:https://www.cnblogs.com/xixixing/p/11848018.html
Copyright © 2011-2022 走看看