严格意义上讲,初次见到机器视觉的产品是在北京参加Connect 2016大会的时候。在主会场外有一些展台,无意间我看到一个关于机器视觉的产品,当时只是记下了这个词,也没怎么太在意。

真正引起我注意的是一个有趣的分享,分享的嘉宾来自“格灵深瞳”。记得当时分享的主题就是围绕机器视觉展开的,印象比较深刻的一是神奇的摄像头可以判定一辆车在马上是否违章;二是在北京三环行驶的无人驾驶车。这些好玩的讯息让自己更加越发的喜欢捣鼓和硬件相关的物件,也让我对机器视觉产生了兴趣。

很难得,在社区找到了一本《OpenCV计算机视觉编程攻略》。这本书使用的C++进行编程,非常适合对机器视觉感兴趣的开发者用来学习。

一、阅读的正确姿势
  • 准备一台不是很不靠谱的电脑(什么系统不重要
  • 准备好无限的耐心(可能安装开发环境的时候会遇到坑
  • 最好有一些C++基础知识的储备(这点对于阅读本书很重要
  • 最好能理解中文(无聊
二、关于开发环境的安装

因为自己使用的是win10系统的电脑,所以IDE选择的是微软的Visual Studio 2017OpenCV版本选择的是3.3。当然,您可以按照自己的喜好,选择合适的IDE和OpenCV的版本。

三、OpenCV是什么?

OpenCV是一个开源的跨平台的计算机视觉库。可以运行在Linux、Windows和Mac OS操作系统上。提供支持多种语言的API(几种常用的语言)。

四、技能回收站

全书共计11章节,去除第一章基础介绍,实际重点章节有10章,大约280页,内容也很简单,所以阅读起来基本上很顺畅。不过书中还会涉及到一些涉及模式和算法,先透露一些。

  • 策略模式 、控制器设计模式
  • 均值平移算法、分水岭算法、MSER算法、GrabCut算法

初篇主要讲解的都是一些基础知识,比如:装载、显示和存储图像;Mat的使用及定义兴趣区域。这些是知识都是开启OpenCV挑战之前需要掌握的。

当大脑中有了一些基础的概念之后,继续学习操作像素就变得有趣些。其实图像本质上就是一个由数值组成的矩阵,而矩阵中的每个元素表示一个像素。在OpenCV中可以通过Mat操作图像。绕了一圈其实就是想说,第一章内容不能跳过(*^__^*) 嘻嘻。其次是说,本书知识结构层层递进,内容衔接合理。

在操作像素的章节里有个关于“椒盐噪声”的Demo很好玩,就是随机选择一些像素,把它们的颜色替换成白色或者黑色。在实验的过程中,我选择了将像素颜色替换成了白色,最后的图片上出现了类似雪花一样的效果。如下图:

椒盐噪声测试效果

效果二:

翻转效果

效果三:

灰度效果

阅读完操作像素、用类处理彩色图像、用直方图统计像素、用形态学运算变换图像、图像滤波、提取直线、轮廓和区域、检测兴趣点、描述和匹配兴趣点、估算图像之间的投影关系、处理视频序列这些内容之后,觉得《OpenCV计算机视觉编程攻略》真的是一本有趣有料的书。在现实生活场景中应用到了很多书中讲的知识。

就全书而言,这本书中涉及的代码篇幅倒不是很多。虽然是一本编程类的技术书籍,但是书每一行代码都是不可或缺的。书中梳理的概念和实现原理是全书的特色,一扫自己对图形处理的盲区。美中不足的是目前就在社区发现了这么一本书。

接下来想用树莓派和OpenCV做点简单的好玩的事情。