opencv 学习方法

1、 学习方法:

http://www.opencv.org.cn/forum.php?mod=viewthread&tid=7055&extra=&page=1

首先还是说说如何学Opencv吧,记得最开始进实验室的时候师兄让看Opencv,当时的学术基础很差,编程能力也很一般,所以学Opencv时感到很无助,像是陷入了一个死循环。想通过算法看代码,发现算法不会;通过代码学算法,又发现自己读代码的能力很弱。后来通过不断的读文章(下面会推荐几篇文章供算法入门)和加强实际的编程能力,其实就是通过Opencv把一些经典的算法实现,来学习。慢慢的就会发现,Opencv和matlab一样好用。不过,Opencv是C/C++混合+模板编程+N多指针,看代码的确很费劲(很多模板类的代码和函数指针的调用函数我到现在还是没怎么看明白)。慢慢来就好,读代码读的多了,会有三个好处:1,更深入和实际的了解算法,深入的了解算法是指通过看代码可以获得算法在实际实践的时候很多细节方面的工作是如何做的,实际是指算法本身在实现的时候会有一些小的窍门,有的算法的实践并不是完完全全将算法翻译过来的,编程实现的时候有实践的一些小窍门。2,Opencv中有很多没有被列到文档里的很实用的代码(很多函数都是_icv开头是,其实很值得一看)。3,发现Opencv的bug,及时的修正保证自己程序的健壮。我的Opencv和刚安装的已经有很大的区别了,就是偶尔发现某处的一些问题,然后修改了,再直接编译。不过我没有注意存记录,弄的现在都不知道什么地方改过。

最近有很多同学问我关于那几个东西有没有比较好的文章和代码,我在这里总结一下,以便大家使用(所列文章google下就能得到):
1, 背景建模,用opencv的吧,不过代码比较难度,而且效果也一般,练练手吧,从读代码开始,然后尝试用自己写一个。
文章: Stauffer, Chris and Grimson, W. E. L. "Adaptive background mixture models for real-time tracking", Computer Vision and Pattern Recognition 1999
2,meanshift做跟踪,opencv有源代码,google下“meanshift tracking”
3,同上,google之
4,《计算机视觉--一种现代方法》
5,Kalman filter:

http://en.wikipedia.org/wiki/Kalman_filter

matlab toolbox: <!-- m --><a class=\"postlink\" href=\"http://www.cs.ubc.ca/~murphyk/Software/Kalman/kalman.html\">http://www.cs.ubc.ca/~murphyk/Software/ ... alman.html</a><!-- m -->
6,opencv论坛视觉算法与理论板块有代码
文章:David Lowe的主页:

http://www.cs.ubc.ca/~lowe/

首先先推荐几篇供大家学习Opencv的文章吧,这些文章是一些经典的算法,它们在Opencv上已经有了具体的实践。这些算法原理比较简单,可以用来作为学习Opencv的算法(通过算法学代码)。这里所说的读代码是要深入函数的内部,了解代码运行的步骤,而不仅仅是会用个别函数:
1,Adaptive background mixture models for real-time tracking ---> 对应Opencv代码:CvGaussBGModel等。
2,Computer vision face tracking as a component of a perceptual user interface ---> cvCamShift等。
3,EM cluster --->CvEM 这个算法很简单,网上到处都有算法介绍。
4,计算机视觉那本书  ---> cvFindHomography, 根据多对点计算图像的投影变换矩阵。计算机标定和三维重建经常用到。
5,An Introduction To the Kalman Filter ---> CvKalman等
6,SIFT ---> Opencv算法版置顶里Rob Hess的SIFT代码,很值得一看,个人感觉非常好的SIFT代码。
先写这么多,把这些算法的Opencv实现完全看懂了Opencv大体上就没问题了。

作为计算机视觉的开源库,OpenCV强大而实用,下面分享一下我学OpenCV的经验。

刚开始是由于大学生创新项目的原因,在大二的时候就开始接触,当时我已经有了C++和Java的基础了。不过先声明一下,两种语言我都学得不怎么样,囧~既然你想学C++版的OpenCV的API,那就要掌握C++的基础知识,特别是类、继承方面的基本原理,当然要求不是很高,理解就行。我说有Java基础,不是让你学Java,而是掌握一种查API手册的习惯和能力,就是,遇到不懂的类或函数(方法),通过查手册了解。我的这种能力是从Java课上学到的,故在这里赘述。

拿到的第一本书叫《学习OpenCV(中文版)》,这本书是C语言版的,比较经典了。说实话,个人觉得对我的帮助不是很大。除了让我学会了读取图像和视频,还有知道一些图像处理的函数之外,其他倒没有什么。不过里面的原理倒是介绍的不错,不过对于初学者来说,可能效果不是那么好。因为里面涉及的东西太多,感觉吸收有压力。

上面是C语言版的,学着不方便。关于C++版的学习,经过摸索,强烈建议到OpenCV中文网站http://www.opencv.org.cn/学习OpenCV。这个网站有个“中文教程”子模块(http://www.opencv.org.cn/opencvdoc/2.3.2/html/doc/tutorials/tutorials.html),跟着这个教程,一步步的学,基础就可以打牢了。这个教程很好,从安装OpenCV到各个模块的学习,都有简明扼要的讲解和例子源代码(很多可以从OpenCV自带例程中找到)。有些函数如果不熟悉,可以到“中文文档”子模块(http://www.opencv.org.cn/opencvdoc/2.3.2/html/index.html)去查。当然,你可以在论坛上注册个帐号,和别人交流等等。推荐一本书《OpenCV2计算机视觉编程手册》张静,科学出版社。(opencv2主要是针对C++版的)

总的来说,学习OpenCV的时候,切忌一下几点:

  1. 有一定的C++基础,会查阅API手册;

  2. 学会安装配置开发环境;
  3. 针对各个模块学,核心模块必学(特别是矩阵处理),基础的图像处理也要学,其他结合项目学;
  4. 边学边动手,一定要敲代码,看例程;
  5. 遇到问题,查手册,上论坛,网上找资源。。。

好吧,只能帮你到这儿了,祝你成功~:)(P.S.夜深了,这可是我一个字一个字敲的,呜呜~)

时间: 2024-10-19 17:38:53

opencv 学习方法的相关文章

实验报告: 人脸识别方法回顾与实验分析 【OpenCV测试方法源码】

趁着还未工作,先把过去做的东西整理下出来~   Github源码:https://github.com/Blz-Galaxy/OpenCV-Face-Recognition (涉及个人隐私,源码不包含测试样本,请谅解~) 对实验结果更感兴趣的朋友请直接看 第5章 [摘要]这是一篇关于人脸识别方法的实验报告.报告首先回顾了人脸识别研究的发展历程及基本分类:随后对人脸识别技术方法发展过程中一些经典的流行的方法进行了详细的阐述:最后作者通过设计实验对比了三种方法的识别效果并总结了人脸识别所面临的困难与

OpenCV 之 支持向量机 (一)

统计学习方法是由 模型 + 策略 + 算法 构成的,构建一种统计学习方法 (例如,支持向量机),实际上就是具体去确定这三个要素. 1  支持向量机 支持向量机,简称 SVM (Support Vector Machine),是一种二分分类模型. 1) 基本模型 (model) 定义在特征空间上的,一种间隔 (margin) 最大的,线性分类器 (linear classifier) 2) 学习策略 (strategy) 使间隔最大化,可转化为求解凸二次规划的问题. 3) 学习算法 (algori

【OpenCV】opencv3.0中的SVM训练 mnist 手写字体识别

前言: SVM(支持向量机)一种训练分类器的学习方法 mnist 是一个手写字体图像数据库,训练样本有60000个,测试样本有10000个 LibSVM 一个常用的SVM框架 OpenCV3.0 中的ml包含了很多的ML框架接口,就试试了. 详细的OpenCV文档:http://docs.opencv.org/3.0-beta/doc/tutorials/ml/introduction_to_svm/introduction_to_svm.html mnist数据下载:http://yann.l

[OpenCV] Face Detection

即将进入涉及大量数学知识的阶段,先读这篇博文放松一下. 长文干货!走近人脸检测:从 VJ 到深度学习(上) 2016-04-12 邬书哲 人脸检测的开始和基本流程 具体来说,人脸检测的任务就是判断给定的图像上是否存在人脸, 如果人脸存在,就给出全部人脸所处的位置及其大小.由于人脸检测在实际应用中的重要意义,早在上世纪70年代就已经有人开始研究,然而受当时落后的技术条件和有限的需求所影响,直到上世纪90年代,人脸检测技术才开始加快向前发展的脚步,在新世纪到来前的最后十年间,涌现出了大量关于人脸检测

如何开始学习OpenCV?

OpenCV是什么,相信搞机器视觉的朋友都清楚.但是很多搞机器视觉的朋友却是对他又爱又恨.爱它因为它是免费的,如果能够好好掌握它,并运用到自己的机器视觉项目中,还是可以一定程度上降低项目成本.恨它是因为它不太好学习.原因有以下几个:1.国内有关OpenCV的中文著作太少了,就2本,而且还是1.1版本的,已经和现在最新版本2.4.3差别太大,就算是学习了,过渡到最新版也要花一定的时间和精力.2.直接学习较高版本,可是没有相应的教程可以参考.直接看英文版本的帮助文档吧,对于英文不好的朋友,难度很大.

Java基于opencv实现图像数字识别(二)—基本流程

Java基于opencv实现图像数字识别(二)-基本流程 做一个项目之前呢,我们应该有一个总体把握,或者是进度条:来一步步的督促着我们来完成这个项目,在我们正式开始前呢,我们先讨论下流程. 我做的主要是表格中数字的识别,但这个不是重点.重点是通过这个我们可以举一反三,来实现我们自己的业务. 图像的识别主要分为两步:图片预处理和图像识别:这两步都很重要 图像预处理: 1. 图像灰度化:二值化 2. 图像降噪,去除干扰线 3. 图像腐蚀.膨胀处理 4. 字符分割 5. 字符归一化 图像识别: 1.

MAC平台下Xcode配置使用OpenCV的具体方法 (2016最新)

1.序言: 1.1 背景 本人小白一枚,不过因为最近在从事机器视觉方面的工作,所以接触到OpenCV. 因为工作需求,本人要在MAC端使用OpenCV实现一些视觉功能,配置环境成了最大的阻碍,网上查了很多相关资料和博客,都因为版本环境问题屡试屡败,不过经历重重尝试,笔者最终还是配置成功并运行了自己的源码.当然成功的关键还是因为笔者站在了巨人的肩膀上,借鉴了很多网上的教程,为了不误导大家配置的过程,参考文章的地址统一放在文章里,望各位大大看见之后能够理解,废话不说进入正题. 1.2 环境说明 如果

Ubuntu16.04安装tensorflow+安装opencv+安装openslide+安装搜狗输入法

Ubuntu16.04在cuda以及cudnn安装好之后,安装tensorflow,tensorflow以及opencv可以到网上下载对应的安装包并且直接在安装包所在的路径下直接通过pip与conda进行安装,如下图所示: 前提是要下载好安装包.安装好tensorflow之后还需要进行在~/.bashrc文件中添加系统路径,如下图所示 Openslide是医学图像一个重要的库,这里给出三条命令进行安装 sudo apt-get install openslide-tools sudo apt-g

关于opencv的文件配置详细内容

原文链接:http://blog.csdn.net/zhuce0001/article/details/21279527 最近在做opencv的一些代码的修修补补的工作: 但在此之前,根本没接触过cpp,更别谈vs,opencv 最近一段时间改代码,感觉自己学习很多东西,在这个过程中一直不断查资料,也没有时间去好好整理一下,但是查资料的过程中发现很多很好的博客,就记录下来方便自己日后查询,很感谢这些热爱分享的大佬 一.只对当前工程起作用的设置1. 设置头文件包含路径   工程上右击,选择"属性&