zoukankan      html  css  js  c++  java
  • 在Windows下编译扩展OpenCV 3.1.0 + opencv_contrib

    为什么要CMake,这里我陈述自己的想法,作为一个刚使用opencv库的小白来说,有以下大概三点内容

    1.由于在学习图像处理滤波器中,需要用到各种边缘保护滤波器(EPS)算法,但是这些算法在OpenCV 3.1.0的Release版本中存在很少,因为他们把大量的算法存放在opencv_contrib目录下面的未稳定功能模块里的ximgproc文件夹下,所以如果我们想要使用这个目录的功能,就需要自己重新进行OpenCV的编译。

    2.由于现在官方的opencv3.1.0要在x64上使用,而且在visual studio2013包括本身以后的平台上使用,怎么让其在以前的版本使用,也可以在x86机子上跑呢?这也就是要CMake的原因之一。

    3.因为opencv是开源库,需要看到源码,了解里面的算法是如何实现的也要CMake,就能看到了......

    说了那么多,CMake会很难吗?我试验过一两次都成功过,确切的回答不会太难,以下是具体准备工作和步骤 

    一、准备工作:

    1.下载OpenCV安装包:https://sourceforge.net/projects/opencvlibrary/files/opencv-win/3.1.0/opencv-3.1.0.exe/download

            安装过程实际上就是解压过程,安装完成后得到(这里修改了文件名):

            

    2.下载opencv_contrib源码:https://github.com/Itseez/opencv_contrib

            下载之后直接解压,得到源码目录:

            

    3.下载cmake-gui工具:http://www.cmake.org/cmake/resources/software.html

     

            选择不安装版的,根据自己的机型选择X86或者X64,下载完成后,直接解压即可使用,不必安装。

     由于下载慢的原因,不能一步步截图,以下将采用下面用到相关链接第一个。在相关链接的基础上进行增加自己的一点见解,和遇到的问题,以及处理

    二、使用cmake生成OpenCV.sln:

    1.打开cmake-guiin目录下的cmake-gui.exe工具:

       

    2.填写相应参数,包括:OpenCV源码目录和OpenCV.sln工程的导出目录,开始导出OpenCV.sln工程:

        

        第一次导出时需要设置后面用来编译此OpenCV.sln工程的VS的版本(这里特别要注意的是,自己机器上是否装有相应的VS版本,如果没有装,还是要编译就会出错,可能是找不到对应的工具原因,以及选择X86和X64),这里用的是VS 2015,也可以选择Visual Studio 10,就能在VS2010上使用:

        

        设置完成之后点击“Generate”开始生成工程:

        

    3.第一次编译完成之后,我们需要将额外的opencv_contrib加到工程中进行第二次编译,在配置表中找到“OPENCV_EXTRA_MODULES_PATH”,设置其参数值为open_contrib源码包中的modles目录,我的目录是“E:OpenCV oolsopencv_contrib-mastermodules”:

        

        设置完成之后点击Configure进行配置,不报错的话就进行第二次编译:

        

        第二次编译一般很快就能完成:

        

        编译完成后,我们在资源管理器下查看上面设置的文件输出目录,发现目录下多出了很多文件,其实就是OpenCV.sln工程文件:

        

    三、用VS打开OpenCV.sln工程,编译生成Debug和Release库:

    1.用VS 2015打开OpenCV.sln工程,在解决方案中可以查看工程目录:

        

    2.编译生成debug版本的库,记得在此之前要选择编译的平台信息,这就是编译生成debug版本和release版本的区别,也可以选择release,因为自己的工程可能要用到相应的动态链接库:

        

        在解决方案中选中工程,右键选择重新生成解决方案:

        

        

    3.找到CMakeTargets中的INSTALL,然后右键选择“仅限于项目”-->“仅生成INSTALL”:

        

        然后,在工程目录下的install目录中,可以看到生成了一堆文件,这堆文件是不是和最上面的截图很相近:

        

    四、把新的库文件配置到到项目中:

    1. VC++目录-->包含目录,添加:
      D:opencv3opencvmybuildinstallinclude

    2. VC++目录-->库目录,添加:
      D:opencv3opencvmybuildinstallx86vc12lib
      D:opencv3opencvmybuildinstallx86vc12staticlib

    3. 链接器-->输入-->附加依赖项,添加: (下面添加的release的版本,注意添加的库与编译选项要一致,需要注意debug比release的文件名多了个d)

    opencv_aruco310.lib
    opencv_bgsegm310.lib
    opencv_bioinspired310.lib
    opencv_calib3d310.lib
    opencv_ccalib310.lib
    opencv_core310.lib
    opencv_datasets310.lib
    opencv_dnn310.lib
    opencv_dpm310.lib
    opencv_face310.lib
    opencv_features2d310.lib
    opencv_flann310.lib
    opencv_fuzzy310.lib
    opencv_highgui310.lib
    opencv_imgcodecs310.lib
    opencv_imgproc310.lib
    opencv_line_descriptor310.lib
    opencv_ml310.lib
    opencv_objdetect310.lib
    opencv_optflow310.lib
    opencv_photo310.lib
    opencv_plot310.lib
    opencv_reg310.lib
    opencv_rgbd310.lib
    opencv_saliency310.lib
    opencv_shape310.lib
    opencv_stereo310.lib
    opencv_stitching310.lib
    opencv_structured_light310.lib
    opencv_superres310.lib
    opencv_surface_matching310.lib
    opencv_text310.lib
    opencv_tracking310.lib
    opencv_ts310.lib
    opencv_video310.lib
    opencv_videoio310.lib
    opencv_videostab310.lib
    opencv_xfeatures2d310.lib
    opencv_ximgproc310.lib
    opencv_xobjdetect310.lib
    opencv_xphoto310.lib
    ippicvmt.lib

    4、关于imread的问题。如果图片名称是存在txt文档中,用readImageLists方法提取到list列表时,要特别注意txt文档的换行符必须是“UNIX 终束符 -LF"。否则读取到的文件名会多出" "字符,导致读取图像文件失败。

    相关链接:http://blog.csdn.net/linshuhe1/article/details/51221015

    相关链接:http://www.cnblogs.com/asmer-stone/p/5530868.html

    相关链接:http://www.yidongtime.com/Html/dev/web/20160305/55517.html

    5、补充的内容:http://www.cnblogs.com/jliangqiu2016/p/6372914.html

    首先,勾选 OPENCV_EXTRA_NONFREE项,否则在运行SIFT、SURF等函数时会报错 Error: The function/feature is not implemented (This algorithm is patented and is excluded in this configuration; Set OPENCV_ENABLE_NONFREE CMake option and rebuild the library) ;

    【OpenCV】opencv4.0.1下 SIFT、SURF的使用

    【OpenCV】opencv4.0.1+opencv_contrib4.0.1+VS2015的编译

    https://blog.csdn.net/Gordon_Wei/article/details/88920411

    https://blog.csdn.net/Gordon_Wei/article/details/85775328

    https://zhuanlan.zhihu.com/p/48854990

     cmake -DOPENCV_EXTRA_MODULES_PATH=<opencv_contrib>/modules -DOPENCV_ENABLE_NONFREE=ON

  • 相关阅读:
    c#基础练习
    一款很厉害的死循环代码
    文字变色逐个出现的特效源码
    IOS开发之UILabel动态高度设置方法
    慎重选择容器类型
    Mac下显示隐藏文件 以及修改 hosts文件内容
    SharePoint 如何使自己的网页自动跳转
    位置和地图:地图的使用
    谈话Java在ThreadLocal理解类
    Android 滑动界面实现---Scroller类别 从源代码和开发文档了解(让你的移动布局)
  • 原文地址:https://www.cnblogs.com/adong7639/p/10690650.html
Copyright © 2011-2022 走看看