zoukankan      html  css  js  c++  java
  • 如何开始学习OpenCV?

    OpenCV是什么,相信搞机器视觉的朋友都清楚。但是很多搞机器视觉的朋友却是对他又爱又恨。爱它因为它是免费的,如果能够好好掌握它,并运用到自己的机器视觉项目中,还是可以一定程度上降低项目成本。恨它是因为它不太好学习。原因有以下几个:
    1、国内有关OpenCV的中文著作太少了,就2本,而且还是1.1版本的,已经和现在最新版本2.4.3差别太大,就算是学习了,过渡到最新版也要花一定的时间和精力。
    2、直接学习较高版本,可是没有相应的教程可以参考。直接看英文版本的帮助文档吧,对于英文不好的朋友,难度很大。
    3、就算是英文可以的朋友,该如何高效的学习OpenCV,估计有些人也没有一个良好的方法,导致学习效果不好。
       为了帮助那些想学OpenCV却又不得法的朋友,本人姑且把自己自学OpenCV的一点点经验拿出来分享一下,希望能够帮到有需要的朋友。已经掌握了良好学习方法并且已经一定程度掌握OpenCV的朋友,还希望不要吐槽。
    1、先去下载最新版OpenCV,网址如下:http://nchc.dl.sourceforge.net/project/opencvlibrary/opencv-win/2.4.3/OpenCV-2.4.3.exe。下载完成后解压到相应目录。本人解压到D:Program FilesOpenCV2.4.3。
    2、有的文章提到使用CMake把OpenCV下面的范例生成为Visual Studio的工程,此处我没有这样做。直接使用范例。这里先把OpenCV目录下面的几个重要目录做个说明(见附件):
    doc目录:主要包含OpenCV的帮助文档。其中opencv2refman.pdf主要是OpenCV的各种类和函数的使用说明。opencv_tutorials.pdf,主要是下面教学代码目录里面各个教学范例的简单讲解。opencv_cheatsheet.pdf主要是最常用OpenCV类和函数的集合。此3个PDF文档对自学者帮助最大。
    samplescpp utorial_code目录:里面包含基本教学代码。和上面的opencv_tutorials.pdf文档遥相呼应,构成一个完整的自学体系。
    build目录:包含编译,调试,发布所需要的各类动态库,静态库,头文件等。
    因为OpenCV2.4.3好像只支持Visual Studio 2008以上版本,我在这里以Visual Studio 2008为例讲解如何让范例跑起来。
    1、添加环境变量:见图片。此处我在path环境变量中添加如下目录:D:Program FilesOpenCV2.4.3uildx86vc9in。记住在前面一个目录后面加分号。
    2、在Visual Studio中包含头文件目录:见附件中的图片,已经用红色矩形框标识如何操作。
    3、在Visual Studio中包含库文件目录:见附件中的图片,已经用红色矩形框标识如何操作。
    4、建立一个新建Visual Studio VC win32控制台应用工程,这里我选择带预编译头的工程,省去添加cpp文件的工作。
    5、代码创建:这里我选择samplescpp utorial_codeImgProcMorphology_2.cpp文件。先添加包含目录,如下(以后所有范例均可以如下添加):
    #include <opencv2/opencv.hpp>
    #include <stdio.h>
    然后复制代码,见附件:
    6、编译文件:自然少不了要包含静态库,要添加的库(debug版和release差别就是文件名后多了一个d标识是debug版)如下:
    debug版
    opencv_calib3d243d.lib
    opencv_contrib243d.lib
    opencv_core243d.lib
    opencv_features2d243d.lib
    opencv_flann243d.lib
    opencv_gpu243d.lib
    opencv_haartraining_engined.lib
    opencv_highgui243d.lib
    opencv_imgproc243d.lib
    opencv_legacy243d.lib
    opencv_ml243d.lib
    opencv_nonfree243d.lib
    opencv_objdetect243d.lib
    opencv_photo243d.lib
    opencv_stitching243d.lib
    opencv_ts243d.lib
    opencv_video243d.lib
    opencv_videostab243d.lib

    release版
    opencv_calib3d243.lib
    opencv_contrib243.lib
    opencv_core243.lib
    opencv_features2d243.lib
    opencv_flann243.lib
    opencv_gpu243.lib
    opencv_haartraining_engine.lib
    opencv_highgui243.lib
    opencv_imgproc243.lib
    opencv_legacy243.lib
    opencv_ml243.lib
    opencv_nonfree243.lib
    opencv_objdetect243.lib
    opencv_photo243.lib
    opencv_stitching243.lib
    opencv_ts243.lib
    opencv_video243.lib
    opencv_videostab243.lib
    添加方法见附件。
    7、字符集设置:如果编译过程中出现如下错误:
    不能将参数 1 从“_TCHAR *”转换为“const std::string &”原因如下: 无法从“_TCHAR *”转换为“const std::string”。请字符集设置为“使用多字节字符集”,设置方法见附件。
    8、最后指定命令后参数:方法见附件。这样就可以不用在windows命令行下输入参数了,方便调试,但是要注意,图片必须放在你所建立的工程目录下(和.cpp以及.h文件同一目录)。否则就要加上相应的路径。如果参数多于1个,请以空格分开。
    9、支持所有参数设置完成,开始编译运行吧。

    如果Visual Studio无问题的话,按照以上按部就班操作,每个范例均可以正常运行。
    学习OpenCV 2.4.3,不要先急着敲代码,应该要先把它的代码运行一遍,看看是什么结果。先知道运行结果,再逆向推导编程思路,最后看代码,分析代码,把每一个OpenCV类和函数的功能作用搞清楚,形成自己的思路,最后抛开原来的代码,按照自己的思路,把代码敲进去,这样才能实现消化吸收。
    当然每个人的学习方法未必相同,或许别人有自己的独特的学习OpenCV的更好方法。如果是这样的话,不妨拿出来分享一下。
    最后,要学好OpenCV并利用OpenCV做机器视觉项目,仅靠OpenCV提供的API是不够,还需要补充一定的数字图像处理的基础知识,不求自己写处理算法,但是每个OpenCV处理算子的功能,应用范围,是要清楚的,只有这样,才在具体的应用中知道该使用什么样的API。
    以上就是我目前自学OpenCV 2.4.3的一点点心得,拿出来和大家分享一下。如果是OpenCV高手,还烦请口下留情,少吐槽,多指点。如果能够帮助到新手,我甚感欣慰。

  • 相关阅读:
    Spring学习之声明式事物管理
    SSH整合所需jar
    Spring学习之AOP
    常见MyEclipse报错—— serialVersionUID的作用
    Spring学习之基本概念
    Java基础——I/O续
    Java基础——I/O
    Vim学习总结
    Java基础——异常处理
    Git 学习总结
  • 原文地址:https://www.cnblogs.com/hualimengyu/p/3835037.html
Copyright © 2011-2022 走看看