Windows Ubuntu 下多个版本OpenCV配置及使用

来源:互联网 发布:大数据的工资待遇 编辑:程序博客网 时间:2024/06/03 23:40
      我相信,只要你涉及图像处理方面的学习或者编程,都了解或使用过opencv。随着opencv版本的发布,有时候需要在同一环境下(无论是Windows或者Ubuntu)安装和使用多个版本opencv(具体原因我就不讲了)。因为自己在这个问题上,浪费了一些时间,所以share给大家供参考。本文将Windows环境和Ubuntu环境下安装和配置分开写,避免大家操作的时候混淆了。以opencv2.4.13和opencv3.1.0(包含opencv_contrib)为例。
一、Windows环境
     1.1、 opencv卸载
如果你已经安装某个版本的opencv,先卸载已有opencv。具体教程请问度娘。如果你在VisualStudio里面设置过opencv的一些环境,比如库目录,文件目录什么的,去掉。
     1.2、 opencv安装
              (1)opencv2.4.13安装
从opencv官网http://www.opencv.org官网下载Windows版本的opencv-2.4.13压缩包并解压到D:\Program Files (x86)\Opencv2.4.13,然后进行以下操作:
用cmake构建opencv-2.4.13到D:/Program Files (x86)/Opencv2.4.13/build下,第一次configure后指定CMAKE_INSTALL_PREFIX为D:\Program Files (x86)\Opencv2.4.13\build\install,然后configure/generate。
              (2)opencv3.1.0安装
从opencv官网http://www.opencv.org官网下载Windows版本的opencv-3.1.0压缩包并解压到D:/Program Files (x86)/Opencv3.1.0;从https://github.com/opencv/opencv_contrib下载扩展包,解压该压缩包到D:/Program Files (x86)/Opencv3.1.0/opencv_contrib,然后进行以下操作:
用cmake构建opencv-3.1.0到D:/Program Files (x86)/Opencv3.1.0/build下,需要注意的是第一次configure后,指定CMAKE_INSTALL_PREFIX为D:\Program Files (x86)\Opencv2.4.13\build\install,设置OPENCV_EXTRA_MODULES_PATH为扩展包D:/Program Files (x86)/Opencv3.1.0/opencv_contrib/modules目录,然后configure/generate。
     1.3、 多个版本opencv协调使用
新建两个文件opencv310.props和opencv2413.props,两个文件分别是:
<?xml version="1.0" encoding="utf-8"?>
<!--
     OpenCV 3.1.0 带contrib的属性表文件
     不用单独配置环境变量OpenCV
     也不用单独在系统PATH上添加OpenCV可执行路径
     只需要在 "菜单"-"视图"-"属性管理器"中添加现有属性表,添加本文件

     使用前请将下面的OpenCVRoot修改为你的OpenCV根目录
-->

<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
    <ImportGroup Label="PropertySheets" />
    <PropertyGroup Label="UserMacros" />
    <PropertyGroup>

        <!-- 请把OpenCVRoot属性的值替换为你的OpenCV编译输出的目标目录,它包含x64、x86这样的子目录 -->
        <OpenCVRoot>D:\Program Files (x86)\Opencv3.1\build\install</OpenCVRoot>

        <!-- 指定INCLUDE路径-->
        <IncludePath>$(OpenCVRoot)\include;$(OpenCVRoot)\include\opencv;$(OpenCVRoot)\include\opnecv2;$(IncludePath)</IncludePath>

        <!-- 指定链接所需lib目录-->
        <LibraryPath Condition="'$(Platform)'=='Win32'">$(OpenCVRoot)\x86\vc12\lib;$(LibraryPath)</LibraryPath>
        <LibraryPath Condition="'$(Platform)'=='X64'">$(OpenCVRoot)\x64\vc12\lib;$(LibraryPath)</LibraryPath>

        <!-- 保证系统处于Debug模式时,可以使用相对路径读取源代码目录下的文件,比如"lena.jpg"而不必是"d:/work/test/test/lena.jpg" -->
        <LocalDebuggerWorkingDirectory>$(ProjectDir)</LocalDebuggerWorkingDirectory>
        <DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>

        <!-- 让系统PATH临时包含指定的dll目录 -->
        <LocalDebuggerEnvironment Condition="'$(Platform)'=='Win32'">PATH=%PATH%;$(OpenCVRoot)\x86\vc12\bin</LocalDebuggerEnvironment>
        <LocalDebuggerEnvironment Condition="'$(Platform)'=='X64'">PATH=%PATH%;$(OpenCVRoot)\x64\vc12\bin</LocalDebuggerEnvironment>
    </PropertyGroup>

    <!-- 以下是程序需要加载的lib文件。-->
    <ItemDefinitionGroup>
        <Link Condition="'$(Configuration)'=='Debug'">
            <AdditionalDependencies>opencv_xfeatures2d310d.lib;opencv_viz310d.lib;opencv_videostab310d.lib;opencv_videoio310d.lib;opencv_video310d.lib;opencv_ts310d.lib;opencv_ximgproc310d.lib;opencv_xobjdetect310.lib;opencv_xobjdetect310d.lib;opencv_xphoto310.lib;opencv_xphoto310d.lib;opencv_tracking310d.lib;opencv_text310d.lib;opencv_surface_matching310d.lib;opencv_superres310d.lib;opencv_structured_light310d.lib;opencv_stitching310d.lib;opencv_stereo310d.lib;opencv_shape310d.lib;opencv_saliency310d.lib;opencv_rgbd310d.lib;opencv_reg310d.lib;opencv_plot310d.lib;opencv_photo310d.lib;opencv_optflow310d.lib;opencv_objdetect310d.lib;opencv_ml310d.lib;opencv_line_descriptor310d.lib;opencv_imgproc310d.lib;opencv_imgcodecs310d.lib;opencv_highgui310d.lib;opencv_fuzzy310d.lib;opencv_flann310d.lib;opencv_features2d310d.lib;opencv_face310d.lib;opencv_dpm310d.lib;opencv_dnn310d.lib;opencv_datasets310d.lib;opencv_core310d.lib;opencv_ccalib310d.lib;opencv_calib3d310d.lib;opencv_bioinspired310d.lib;opencv_aruco310d.lib;opencv_bgsegm310d.lib;%(AdditionalDependencies)</AdditionalDependencies>
        </Link>
        <Link Condition="'$(Configuration)'=='Release'">
            <AdditionalDependencies>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_viz310.lib;opencv_xfeatures2d310.lib;opencv_ximgproc310.lib;%(AdditionalDependencies)</AdditionalDependencies>
        </Link>
    </ItemDefinitionGroup>
    <ItemGroup />
</Project>

<?xml version="1.0" encoding="utf-8"?>
<!--
     OpenCV 2.4.13的属性表文件
     不用单独配置环境变量OpenCV
     也不用单独在系统PATH上添加OpenCV可执行路径
     只需要在 "菜单"-"视图"-"属性管理器"中添加现有属性表,添加本文件

     使用前请将下面的OpenCVRoot修改为你的OpenCV根目录
-->

<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
    <ImportGroup Label="PropertySheets" />
    <PropertyGroup Label="UserMacros" />
    <PropertyGroup>

        <!-- 请把OpenCVRoot属性的值替换为你的OpenCV编译输出的目标目录,它包含x64、x86这样的子目录 -->
        <OpenCVRoot>D:\Program Files (x86)\Opencv2.4.13\build\install</OpenCVRoot>

        <!-- 指定INCLUDE路径-->
        <IncludePath>$(OpenCVRoot)\include;$(OpenCVRoot)\include\opencv;$(OpenCVRoot)\include\opnecv2;$(IncludePath)</IncludePath>

        <!-- 指定链接所需lib目录-->
        <LibraryPath Condition="'$(Platform)'=='Win32'">$(OpenCVRoot)\x86\vc12\lib;$(LibraryPath)</LibraryPath>
        <LibraryPath Condition="'$(Platform)'=='X64'">$(OpenCVRoot)\x64\vc12\lib;$(LibraryPath)</LibraryPath>

        <!-- 保证系统处于Debug模式时,可以使用相对路径读取源代码目录下的文件,比如"lena.jpg"而不必是"d:/work/test/test/lena.jpg" -->
        <LocalDebuggerWorkingDirectory>$(ProjectDir)</LocalDebuggerWorkingDirectory>
        <DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>

        <!-- 让系统PATH临时包含指定的dll目录 -->
        <LocalDebuggerEnvironment Condition="'$(Platform)'=='Win32'">PATH=%PATH%;$(OpenCVRoot)\x86\vc12\bin</LocalDebuggerEnvironment>
        <LocalDebuggerEnvironment Condition="'$(Platform)'=='X64'">PATH=%PATH%;$(OpenCVRoot)\x64\vc12\bin</LocalDebuggerEnvironment>
    </PropertyGroup>

    <!-- 以下是程序需要加载的lib文件。-->
    <ItemDefinitionGroup>
    <Link Condition="'$(Configuration)'=='Debug'">
      <AdditionalDependencies>opencv_ml2413d.lib;opencv_calib3d2413d.lib;opencv_contrib2413d.lib;opencv_core2413d.lib;opencv_features2d2413d.lib;opencv_flann2413d.lib;opencv_gpu2413d.lib;opencv_highgui2413d.lib;opencv_imgproc2413d.lib;opencv_legacy2413d.lib;opencv_objdetect2413d.lib;opencv_ts2413d.lib;opencv_video2413d.lib;opencv_nonfree2413d.lib;opencv_ocl2413d.lib;opencv_photo2413d.lib;opencv_stitching2413d.lib;opencv_superres2413d.lib;opencv_videostab2413d.lib;%(AdditionalDependencies)</AdditionalDependencies>
    </Link>
    <Link Condition="'$(Configuration)'=='Release'">
       <AdditionalDependencies>opencv_objdetect2413.lib;opencv_ts2413.lib;opencv_video2413.lib;opencv_nonfree2413.lib;opencv_ocl2413.lib;opencv_photo2413.lib;opencv_stitching2413.lib;opencv_superres2413.lib;opencv_videostab2413.lib;opencv_calib3d2413.lib;opencv_contrib2413.lib;opencv_core2413.lib;opencv_features2d2413.lib;opencv_flann2413.lib;opencv_gpu2413.lib;opencv_highgui2413.lib;opencv_imgproc2413.lib;opencv_legacy2413.lib;opencv_ml2413.lib;%(AdditionalDependencies)</AdditionalDependencies>
    </Link>
  </ItemDefinitionGroup>
  <ItemGroup />
</Project>
在用VisualStudio编译项目的时候如果出现opencv相关的函数未定义或者某个文件找不到,打开属性管理器,然后右键项目“添加现有属性表”,想使用opencv-2.4.13时选择添加opencv2413.props文件;想使用opencv-3.1.0时选择添加opencv310.props。再次重新编译项目,就可以找到对应opencv的文件了。
二、Ubuntu环境
     2.1、 opencv卸载
              此操作是在已经安装了opencv的前提下进行的,如何卸载已有opencv,问度娘。如果你还没有安装过opencv,跳过该步骤。
     2.2、 opencv安装(命令不要敲错了,如果安装的时候命令错了,可能在安装opencv的时候不会报错,但是在利用opencv构建项目的时候可能会缺少库文件或者模块,那就尴尬了)
              (1)opencv2.4.13安装
                从opencv官网http://www.opencv.org下载linux下opencv2.4.13的压缩包,解压该压缩包到/home/mhg/works/opencv-2.4.13,然后进行以下操作:
               cd /usr/local
               mkdir opencv2413
               cd /home/mhg/works/opencv-2.4.13
               mkdir build;cd build
               cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local/opencv2413 ..
               make -j8
               sudo make install
              (2)opencv3.1.0安装
              从opencv官网http://www.opencv.org下载linux下opencv3.1.0的压缩包,解压该压缩包到/home/mhg/works/opencv-3.1.0;从https://github.com/opencv/opencv_contrib下载扩展包,解压该压缩包到/home/mhg/works/opencv-3.1.0/opencv_contrib。然后进行以下操作:
               cd /usr/local
               mkdir opencv310
               cd /home/mhg/works/opencv-3.1.0
               mkdir build;cd build
               cmake -D CMAKE_BUILD_TYPE=RELEASE -D OPENCV_EXTRA_MODULES_PATH=/home/mhg/works/opencv-3.1.0/opencv_contrib/modules -D CMAKE_INSTALL_PREFIX=/usr/local/opencv310 ..
               make -j8
               sudo make install
     2.3、 多个版本opencv协调使用
              有教程说使用Makefile来配置opencv,因为本人不太熟悉Makefile语法,只说明一下使用CMakeLists.txt来协调使用多个版本的opencv:
              在CMakeLists.txt文件中,会找到一句find_package(OpenCV REQUIRED),如果没有正确找到opencv的安装目录,就无法成功编译工程。要想找到对应版本的oepncv,只需要找到对应的OpenCVConfig.cmake文件。opencv-2.4.13的OpenCVConfig.cmake就在/home/mhg/works/opencv-2.4.13/build文件夹下,opencv-3.1.0的OpenCVConfig.cmake就在/home/mhg/works/opencv-3.1.0/build文件夹下。在项目中的CMakeLists.txt文件中,加入下面这句:
使用opencv-2.4.13时:set(OpenCV_DIR "/home/mhg/works/opnecv-2.4.13/build")
使用opencv-3.1.0时:set(OpenCV_DIR "/home/mhg/works/opnecv-3.1.0/build")
注意:文中的文件夹,比如D:/Program Files (x86)/、mhg/works是我自己建的文件夹,根据个人配置自行修改。

0 0
原创粉丝点击