如何开始学习OpenCV?

    OpenCV是什么,相信搞机器视觉的朋友都清楚。可是不少搞机器视觉的朋友倒是对他又爱又恨。爱它由于它是免费的,若是可以好好掌握它,并运用到本身的机器视觉项目中,仍是能够必定程度上下降项目成本。恨它是由于它不太好学习。缘由有如下几个:算法

一、国内有关OpenCV的中文著做太少了,就2本,并且仍是1.1版本的,已经和如今最新版本2.4.3差异太大,就算是学习了,过渡到最新版也要花必定的时间和精力。编程

二、直接学习较高版本,但是没有相应的教程能够参考。直接看英文版本的帮助文档吧,对于英文很差的朋友,难度很大。windows

三、就算是英文能够的朋友,该如何高效的学习OpenCV,估计有些人也没有一个良好的方法,致使学习效果很差。ide

   为了帮助那些想学OpenCV却又不得法的朋友,本人姑且把本身自学OpenCV的一点点经验拿出来分享一下,但愿可以帮到有须要的朋友。已经掌握了良好学习方法而且已经必定程度掌握OpenCV的朋友,还但愿不要吐槽。函数

一、先去下载最新版OpenCV,网址以下:http://nchc.dl.sourceforge.net/project/opencvlibrary/opencv-win/2.4.3/OpenCV-2.4.3.exe。下载完成后解压到相应目录。本人解压到D:\Program Files\OpenCV2.4.3。学习

二、有的文章提到使用CMake把OpenCV下面的范例生成为Visual Studio的工程,此处我没有这样作。直接使用范例。这里先把OpenCV目录下面的几个重要目录作个说明(见附件):ui

doc目录:主要包含OpenCV的帮助文档。其中opencv2refman.pdf主要是OpenCV的各类类和函数的使用说明。opencv_tutorials.pdf,主要是下面教学代码目录里面各个教学范例的简单讲解。opencv_cheatsheet.pdf主要是最经常使用OpenCV类和函数的集合。此3个PDF文档对自学者帮助最大。spa

samples\cpp\tutorial_code目录:里面包含基本教学代码。和上面的opencv_tutorials.pdf文档遥相呼应,构成一个完整的自学体系。.net

build目录:包含编译,调试,发布所须要的各种动态库,静态库,头文件等。命令行

由于OpenCV2.4.3好像只支持Visual Studio 2008以上版本,我在这里以Visual Studio 2008为例讲解如何让范例跑起来。
一、添加环境变量:见图片。此处我在path环境变量中添加以下目录:D:\Program Files\OpenCV2.4.3\build\x86\vc9\bin。记住在前面一个目录后面加分号。
二、在Visual Studio中包含头文件目录:见附件中的图片,已经用红色矩形框标识如何操做。
三、在Visual Studio中包含库文件目录:见附件中的图片,已经用红色矩形框标识如何操做。
四、创建一个新建Visual Studio VC win32控制台应用工程,这里我选择带预编译头的工程,省去添加cpp文件的工做。
五、代码建立:这里我选择samples\cpp\tutorial_code\ImgProc\Morphology_2.cpp文件。先添加包含目录,以下(之后全部范例都可以以下添加):
#include <opencv2/opencv.hpp>
#include <stdio.h>
而后复制代码,见附件:
六、编译文件:天然少不了要包含静态库,要添加的库(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
添加方法见附件。
 七、字符集设置:若是编译过程当中出现以下错误:
不能将参数 1 从“_TCHAR *”转换为“const std::string &”缘由以下: 没法从“_TCHAR *”转换为“const std::string”。请字符集设置为“使用多字节字符集”,设置方法见附件。
八、最后指定命令后参数:方法见附件。这样就能够不用在windows命令行下输入参数了,方便调试,可是要注意,图片必须放在你所创建的工程目录下(和.cpp以及.h文件同一目录)。不然就要加上相应的路径。若是参数多于1个,请以空格分开。
九、支持全部参数设置完成,开始编译运行吧。
 
若是Visual Studio无问题的话,按照以上循序渐进操做,每一个范例都可以正常运行。
学习OpenCV 2.4.3,不要先急着敲代码,应该要先把它的代码运行一遍,看看是什么结果。先知道运行结果,再逆向推导编程思路,最后看代码,分析代码,把每个OpenCV类和函数的功能做用搞清楚,造成本身的思路,最后抛开原来的代码,按照本身的思路,把代码敲进去,这样才能实现消化吸取。
固然每一个人的学习方法未必相同,或许别人有本身的独特的学习OpenCV的更好方法。若是是这样的话,不妨拿出来分享一下。
最后,要学好OpenCV并利用OpenCV作机器视觉项目,仅靠OpenCV提供的API是不够,还须要补充必定的数字图像处理的基础知识,不求本身写处理算法,可是每一个OpenCV处理算子的功能,应用范围,是要清楚的,只有这样,才在具体的应用中知道该使用什么样的API。
以上就是我目前自学OpenCV 2.4.3的一点点心得,拿出来和你们分享一下。若是是OpenCV高手,还烦请口下留情,少吐槽,多指点。若是可以帮助到新手,我甚感欣慰。
相关文章
相关标签/搜索