zoukankan      html  css  js  c++  java
  • OpenCV学习笔记(一)安装及运行第一个OpenCV程序

    1、下载及安装

     OpenCV是一套开源免费的图形库,主要有C/C++语言编写,官网: http://opencv.org/ 。在 http://opencv.org/downloads.html 可以找到个版本和各种平台的程序包。OpenCV的Windows平台安装包是放在SourceForge.net网站。

    我下了2.4.4版,大概217M。安装包其实就是一个压缩包,安装过程就是解压到某个文件夹。我是安装到 E:Softopencv 目录,安装后文件夹如下:

    我们只需要关注“build”文件夹即可,其他的可以不用管。“build”文件夹编译后的文件,我们可以直接使用。打开“build”文件夹,如下

    编写过C++程序的都知道,要使用别人的编写好的DLL,那么需要三种文件,即头文件、后缀名为“lib”的链接文件,后缀名为"dll"的动态库文件。如果使用静态编译方式,那么需要头文件和静态库文件。X86是32位操作系统的库,X64是64位操作系统的库。

    (1)“buildx86vc10in”目录下放的是OpenCV运行时所需的动态运行库,

    (2)“buildx86vc10lib”目录放的是编译OpenCV程序时所需的的动态链接库,

    (3)“buildx86vc10staticlib”目录方式的静态编译时OpenCV所需要的静态链接库,如果是静态编译,运行时则不需要“buildx86vc10in”目录的DLL文件,但编译后的文件较大。

    由于我使用VS2010,所以只关注目录 E:Softopencvuildx86vc10 。为了使VS2010可以编译OpenCV程序,我们需要对VS2010做一些设置,主要是让VS2010能找到OpenCV的头文件和链接库。在“OpenCV安装目录uilddocs”目录下有个名为“opencv_tutorials.pdf”的PDF文档,里面的1.5节“How to build application with OpenCV inside the Micorosoft Visual Studio”说明了如何配置VS2010。

    如果想一次配置对所有的C++项目都适用,可以按如下配置:

    1、在VS2010打开任何一个C++项目,然后选择“视图”=》“其他窗口”=》“属性管理器”,如下图:

    打开的属性管理器窗口如下:

    2、在打开的属性管理器窗口中,展开“Degug|Win32”节点,双击“Micorsoft.Cpp.Win32.user”会打开全局属性设置窗口,

    (1)在左边选择“VC++目录”;

    (2)在右边“包含目录”中加上OpenCV的头文件目录,我的头文件目录是放在“E:Softopencvuildinclude”,这个根据OpenCV的安装目录,一般在buildinclude目录;

    (3)在右边“库目录”中加上OpenCV的链接库目录,我的VS2010库目录是放在“E:Softopencvuildx86vc10lib”,这个是根据OpenCV的安装目录和IDE版本决定,根据自己的情况选择。

    对“Release|Win32”节点下的“buildx86vc10in”也做同样配置。

    2、第一个OpenCV程序

    通过以上配置,OpenCV的开发环境已经搭建起来,下面我们来写第一个OpenCV HelloWorld程序。

    打开VS2010,新建一个Win32控制台应用程序

    新建后的项目如下:

     双击“HelloWorld.cpp”文件,输入如下内容

    //C++输入输出库头文件
    #include <iostream>
    //OpenCV核心库头文件
    #include <opencv2corecore.hpp>
    //OpenCV图形处理头文件
    #include <opencv2highguihighgui.hpp>
    
    //OpenCV核心动态链接库,和core.hpp头文件对应,d代表调试版本
    #pragma comment(lib,"opencv_core242d.lib")
    //OpenCV图形处理动态链接库,和highgui.hpp头文件对应,d代表调试版本
    #pragma comment(lib,"opencv_highgui242d.lib")
    
    int _tmain(int argc, _TCHAR* argv[])
    {
        //窗口名称
        std::string windowName = "HelloWorld";
        //图像名称
        std::string imgFile = "opencv-logo.png";
        //读入图像
        cv::Mat image = cv::imread(imgFile,CV_LOAD_IMAGE_COLOR);
        //如果无法读取图形
        if(!image.data)
        {
            std::cout << "无法打开图像文件" <<std::endl;
            system("PAUSE");//暂停窗口
            return -1;
        }
        //创建一个新窗口
        cv::namedWindow(windowName,CV_WINDOW_AUTOSIZE);
        //将图像显示都新创建的窗口中
        cv::imshow(windowName,image);
        //等待,直到用户按任意键时退出
        cv::waitKey(0);
    
        return 0;
    }

    如果编译无错误,要运行程序,还要复制一些必要的文件: 

    (1)在OpenCV的目录下的doc文件夹有一个名为"opencv-logo.png"的图像文件,将其复制到“HelloWorld”项目的文件夹下,

    (2)到OpenCV安装目录uildx86vc10in 复制三个文件 opencv_core242d.dll、opencv_highgui242d.dll、tbb_debug.dll 三个文件到解决方案文件夹下的Degug目录,也就是编译后可执行文件所在的目录。

    如果一切正常,运行后的效果如下:

    3、OpenCV学习资源

    2.3.2版本的帮助文档翻译 http://www.opencv.org.cn/opencvdoc/2.3.2/html/doc/tutorials/tutorials.html ,是OpenCV安装目录uilddocsopencv_tutorials.pdf文档的中文翻译。

    http://www.opencv.org.cn/ 也是学习OpenCV的好地方。

    http://wiki.opencv.org.cn/index.php OpenCV的各种中文资料。

    http://opencv.org/documentation.html 官方的在线帮助文档。

    http://www.sigvc.org/bbs/ 视觉计算论坛。

  • 相关阅读:
    待重写
    待重写
    待重写
    ReflectionUtils使用
    kafka消费组、消费者
    待重写
    Map接口常用实现类学习
    利用httpClient发起https请求
    sql常用格式化函数及字符串函数
    method reference
  • 原文地址:https://www.cnblogs.com/teafree/p/4095887.html
Copyright © 2011-2022 走看看