《学习opencv》一书是基于opencv1.0即C语言版本的opencv的一本书。下面大致梳理一下该书的学习体会
后面又学习了毛星云的《opencv3》,自己补充了点c++的知识,才对《学习opencv》一书有了更深的了解
其中自己使用的版本是2.3.1,参考了http://blog.csdn.net/morewindows/article/category/1291764里面的文章和例程实践
第一章
介绍了opencv的历史,机器视觉的概念等等
opencv的结构:主要4个模块,cv(图像处理和视觉算法)、mll(统计分类器)、highgui(图像和视频输入输出)、cxcore(基本结构和算法、绘图函数等)
opencv以c语言封装了很多关于图像处理的基本函数,理解为一个功能强大的图像处理api库。可以看到很多算法都是《数字图像处理》一书中讲到的。并且是开源的,即这些api函数可以查看源码,便于我们后面在嵌入式平台中实现
第二章 opencv入门
3个例子:显示图片,播放avi视频,视频播放控制
2个变换:图像卷积、图像缩放与边缘检测
2个驱动硬件的例子:摄像机读入和写入avi
均是以简单的例子讲解,就是一些api和数据结构体的说明。比较重要的如:iplimage结构体,图像加载,创建窗口、销毁图像,按键等待等基本函数。cvcapture结构体,滚动条的创建,创建一幅图像时需建立iplimage结构体变量等。
例子均是c语言,一些api和结构体均采用比较好的命名规则和大小写,倒是int main(*****)里面的2个参量的写法,在vc下编程原来从来没考虑过。
第3章 初探opencv
opencv基本数据类型:一些基本的结构体数据类型,如cvrent、cvpoint,以及相应的同名大小写有区别的构造函数。
图像类型:1.0版本实际上采用了面向对象的概念,iplimage由cvmat派生、cvmat的结构体构成,分成矩阵头和数据体。
矩阵数据的存取方法:最好是自定义指针,根据图像的元素产生正确的偏移
iplimage结构:结构体中每个变量代表的含义。比较重要的如roi、imagedata的char型指针等、通道的概念。可以根据该结构体来访问某一点的图像数据。如例子3-12即是利用roi精确到像素点
矩阵图像有一些基本操作函数:一大堆,不举例了。
绘制:绘制多边形、字体和文字等函数
数据存储:yaml和xml格式,相应的函数和例子
第4章 细说highgui
如显示、文件系统,摄像头之类的硬件交互函数在其中
创建窗口函数、载入图像、显示、键盘、鼠标等等相应的函数和结构体,一些用法说明和例子
滑动条、视频的处理
第5章 图像处理
关于图像处理的一些常用操作的api函数等实例
各种平滑、图像形态学、膨胀腐蚀、可以自定义核、开与闭运算、形态学梯度、礼帽和黑帽、漫水填充算法、图像金字塔、阈值化。
这些都是《数字图像处理》一书中的一些图像处理的基本概念、这里有对应的api的说明和例子
第6章 图像变换
5章是:增强、修改或者处理图像、成为类似但全新的图像。这一章重点在变换:将图像转换成源图像数据的另一种表现形式
卷积、卷积边界的处理、梯度和sobel导数、滤波器、拉普拉斯变化、canny算子、霍夫变换、映射、几何操作(拉伸、收缩、扭曲、旋转)、仿射、透视、dft、dct、几分图像、直方图均衡化、
第7章 直方图与匹配
对图像数据进行各种统计、直方图的基本数据结构
第8章 轮廓
第9章 图像局部与分割 (从图像中将目标或部分目标分割出来)
第10章 跟踪与运动 (角点的概念)
第11章 摄像机模型与标定
第12章 投影与三维视觉 (师兄做个一个3维视觉的程序)
第13章 机器学习(将数据转换成信息)
后面7-13章因为目前不用,所以没有什么太多的了解
后面会学习《opencv3编程入门》,学习c++和vs2010编程的相关知识。再来更新该贴
需加载的技能树:
(c++、vs2010(windows下编程的基本概念)、linux、linux下编程的基本概念)。
没有怎么接触过面向对象语言,所以这些面向对象语言有一大块缺失、及相应的vc开发、mfc应用程序开发、其他的如qt开发、java网站后台开发等等这一整块都有很大缺失。不能啊(/(ㄒoㄒ)/~~)
接触linux理解不深,对程序实际的编译过程不了解,导致很多linux下的软件不会用,如数字后端的版图软件等等,又是很大一块缺失。不能啊(/(ㄒoㄒ)/~~)
所以这2块技能得立马补起来。后续也会在csdn博客中更新
其他技能:
(FPGA、modelsim仿真、microblaze、时序优化、soc、数字后端流程、uvm验证)
这几个都是跟工作相关的必备技能,得赶紧熟练起来
lijiuyang
2016-3-11于武昌