zoukankan      html  css  js  c++  java
  • VS2013下OpenCV2.48配置

    VS2013+OpenCV2.48配置

    一、下载OpenCV

    OpenCV下载地址http://opencv.org/

    SDK下载链接在页面右侧


    根据平台选择相应的SDK下载。在Windows开发下开发,选择下载OpenCV for Windows。

    二、安装OpenCVSDK

    双击下载的opencv-2.4.8.exe进行SDK安装。


    设置opencv sdk解压目录,点击Extract后解压。


    解压过程如上图

     

    三、OpenCV SDK文件夹结构简介

    解压后再解压目录下有OpenCV目录

     

    在opencv文件夹下有build和sources两个文件夹,build是sdk 包,sources是源码包(里面也有opencv使用例子源码)

    在build文件夹下include是C&C++头文件所在文件夹;doc是文档文件夹;java是java开发的库文件夹;python是pathon开发库文件夹;x64和X86是已编译好的C&C++的64位和32位库文件夹,在它里面有vc10、vc11、vc12三个文件夹,分别对应VC++2010、VC++2012和VC++2013。

    因不同版本VC++生成的库文件所需的运行时不同,因此配置VC++工程时需要选择相对应的二进制库文件。在vcXX文件夹下bin文件夹是公用的动态链接库,在系统环境变量里配置后,所以opencv工程都能共享他们;lib文件夹是动态库隐式调用所需的静态链接文件;staticlib文件夹是静态链接库,需要生成不依赖动态库的程序就是用它们。

    四、设置opencv的环境变量

    “开始菜单”-> “控制面板”->“系统”或在“计算机”上右键选“属性”打开系统设置窗口


    选择“高级系统设置”打开“系统属性”窗口


    选择“高级选项卡“,点击“环境变量”按钮打开“环境变量”窗口


    在系统变量里找到Path变量,在Path中添加值SDK中的bin目录。本人解压时设置的目录是E:SDK,用到是32位库,VC++用的是2013,因此添加到bin目录为E:SDKopencvuildx86vc12in。注:环境变量配置后,需重启系统才能生效。

     

    五、VC++工程配置


    打开vs2013,选择新建项目。

    选择Visual C++模板创建空项目。因只是简单测试下OpenCV SDK能否正常使用,不想引入windows api、MFC、.NET这些,我选择了最简单的空项目来创建工程。


    项目建好后,点击“菜单”->“项目”->“属性”,打开项目属性对话框,选择“C++目录”对SDK目录进行配置。


    选择“包含目录”,在下拉菜单中选择“编辑”,打开包含目录对话框。添加前面介绍过的SDK中的include文件夹的路径。


    选择“库目录”,在下拉菜单中选择“编辑”,打开包含目录对话框。添加前面介绍过的SDK中的lib文件夹的路径。这里需要注意点,开发32位程序选择x86目录下的,64位则选X64目录下的,同时还要根据自己所用的VC++版本选择相应的vcXX目录。我要开发的是32位程序,使用的2013因此,选择的是X86中vc12下的lib文件夹。

    接下来是配置项目所需的静态链接库。选择“链接器”下的“输入”,在“附加依赖项”下拉项中选择“编辑”,打开附加依赖项对话框。


    在附加依赖项中添加opencv_core248d.lib,这是opencv最基本的类和函数;添加opencv_highgui248d.lib,它是opencv提供的简单gui;添加opencv_imgproc248d.lib,它提供了一些基础的图像处理操作。简单的运用,这三个库基本够了。用到其他opencv功能时,只需按照所用函数所在的头文件名,添加相应的lib文件就行了。

    注:前面设置的是新建工程的Debug版配置,切换到Release用同样的方法配置就可以,唯一的区别是Debug版用到的dll和lib文件都有后缀d,Release版使用的不带d。配置Release的附加依赖项时别忘了把d删掉。

     

    六、测试OpenCV配置是否正确

    在解决方案中,在项目上右键,选择添加新建项。


    在对话框中选择添加C++文件


    在新建的C++文件中写上一个最简单的测试代码生成后运行。如果配置无误,生成的程序就能正常运行了。如果提示缺少dll文件,是环境变量没配置对,重新配置环境变量或将SDK中bin目录中的相应dll文件靠到工程目录下或系统所在盘WindowsSystem32下就可以解决。如果是提示链接错误,是附加依赖项没设置对,或没有添加够所需的lib文件。

     这里来段用OpenCV打开并显示图片的代码 

    #include <opencv2opencv.hpp>

    //opencv2下是C++接口

    using namespace cv;

    //cv是Opencv的名字空间

    int main()

    {

             Mat img = imread("E:/lena.png");

             //新建一个矩阵用来存放从文件读取的图片

             namedWindow("image",CV_WINDOW_AUTOSIZE);

             //创建一个窗口,窗口标题设为image,并设成自动大小

             imshow("image",img);

             //在image名字的窗口中显示img中的图像

             waitKey();

             //等待键盘输入

             return 0;

             //程序结束

    }

     例子中所用的测试图片是OpenCV自带的lena.png。看过图像学书的是不是觉着这图很眼熟,似乎所有图像学的书都会用到这图。这图基本上可以算图像学的一个标准用图了,不过这图并不是完整版哦,它只是截取了其中的一部分。


    个人总结清单:

    OpenCV-2.4.13


    1、系统环境变量
    D:opencvopencvuildx86vc12in
    2、VC++ 目录
    包含目录:
    D:opencvopencvuildinclude
    库目录:
    D:opencvopencvuildx86vc12lib
    3、连接器->输入->附加依赖项


    Release
    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;
    opencv_nonfree2413.lib;
    opencv_objdetect2413.lib;
    opencv_ocl2413.lib;
    opencv_photo2413.lib;
    opencv_stitching2413.lib;
    opencv_superres2413.lib;
    opencv_ts2413.lib;
    opencv_video2413.lib;
    opencv_videostab2413.lib;


    Debug
    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_ml2413d.lib;
    opencv_nonfree2413d.lib;
    opencv_objdetect2413d.lib;
    opencv_ocl2413d.lib;
    opencv_photo2413d.lib;
    opencv_stitching2413d.lib;
    opencv_superres2413d.lib;
    opencv_ts2413d.lib;
    opencv_video2413d.lib;
    opencv_videostab2413d.lib;




    测试
    --------------------------------------------------------------------------
    #include <opencv2/opencv.hpp>
    #include <iostream>


    using namespace std;
    using namespace cv;


    int main(int argc, char **argv)
    {
    Mat img = imread("lena.png");
    if (img.empty())
    {
    cout << "打开图像失败!" << endl;
    return -1;
    }
    namedWindow("image", CV_WINDOW_AUTOSIZE);
    imshow("image", img);
    waitKey();


    return 0;
    }
    --------------------------------------------------------------------------

    Keep it simple!
    作者:N3verL4nd
    知识共享,欢迎转载。
  • 相关阅读:
    SpringMVC使用ResponseEntity实现文件下载,及图片base64的字节数组上传于下载
    File类的createNewFile()和mkdirs() mkdir()
    为什么Java里的Arrays.asList不能用add和remove方法?
    java如何向数组里添加元素
    java里getPath、 getAbsolutePath、getCanonicalPath的区别
    MultipartFile 类
    File类的createNewFile()与createTempFile()的区别
    IntelliJ Idea解决Could not autowire. No beans of 'xxxx' type found的错误提示
    FileInputStream读取的两种方法:逐字节读;以字节数组读取
    JCE cannot authenticate the provider BC
  • 原文地址:https://www.cnblogs.com/lgh1992314/p/6616381.html
Copyright © 2011-2022 走看看