有前人总结了以下三本书的内容,基本按照由浅入深的方式来学习下。http://blog.csdn.net/yang_xian521/article/details/8523958#comments
其他新书:http://opencv.org/new-opencv-books.html
- Face and Eye Detection in Photos and Video
- Color Object Tracking in Video
- Handwriting Recognition using Histogram of Oriented Gradients (HOG)
- Plant Classification with Machine Learning
- Matching Keypoints and SIFT descriptors to build a Book Cover Identifier
《Learning OpenCV》是一本经典的老书了,是一个入门教材,读完可以知道OpenCV能做些什么,但里面的具体代码个人觉得还是有点out,但好处就是中文资料很全,网上可以找到很多参考资料。
《OpenCV Cookbook》是我以前推荐过的一本书,是基于2.2版本写的。我的感觉是一本上手教材,书的目的是让大家知道应该如何去调用OpenCV的函数,如何用OpenCV的类去实现简单的视觉任务。需要一定的C++基础。
《Master OpenCV》感觉更像是一个上层建筑,是基于2.4版本写的。是教会大家如何用OpenCV去实现复杂的任务,去完成OpenCV自带函数没有提供的功能。(因为大家经常会因为“OpenCV里面有xxx的函数么?”的否定答案而苦恼,这本书就是告诉大家OpenCV只是个工具,如何去驾驭这个工具进行二次开发是要动脑的)
这本《Master OpenCV》书第一章没有很复杂的东西。
第一章就是介绍了一个边缘检测、肤色检测、一个填充算法,并把这个功能移植到android平台,边缘检测和填充算法都是OpenCV自带的函数功能。这里随便说说读完第一章的几点收获:
1、具体任务要具体分析。这里因为要做到嵌入式平台中,算法的复杂度被放在了首位,所以双边滤波做了简化、填充算法也只是在原图的缩小1/2的图上进行的计算。肤色检测也没有先用经典的人脸检测算法,而是用了一种土鳖的方案,都是为了在嵌入式平台上能运行的高效。这种处理问题的方法值得借鉴学习
2、面向对象编程的思想。这章里也提到了显示FPS,只是人家是在一个类中实现,再对比自己之前写的OpenCV学习笔记(三十八)——显示当前FPS,高下自分。实在是自惭形愧啊~~。
3、貌似把自己的c++工程移植到android平台并不需要改写自己的代码,只要做个JNI function作为接口就可以调用c++的程序了,感觉有点像Matlab中的mex。android下的OpenCV开发基本不懂,这里就不乱讲了。
Chapters (each is a project with full source-code):
- Cartoonifier and Skin Changer for Android.
- Marker-based Augmented Reality on iPhone or iPad.
- Marker-less Augmented Reality.
- Exploring Structure from Motion using OpenCV.
- Number Plate Recognition using SVM and Neural Networks.
- Non-rigid Face Tracking.
- 3D Head Pose Estimation using AAM and POSIT.
- Face Recognition using Eigenfaces or Fisherfaces.
- Developing Fluid Wall using the Microsoft Kinect.