跟我一起玩OpenCV(零)

 

在这个系列里,你会和我一起从头接触并熟悉OpenCV,进而利用相关内容构建知识体系并快速应用。在其中,我会逐步提炼一些快速熟悉陌生技术领域的方法论,不一定是最快的,但一定是最接地气的。...





题外话:@哈维 同学今天询我为何两天都没更了,着实让我感动,真心感到你写的东西还在有人关注是一件特别让人有劲头的事儿。

两天没更新,主要是被OpenCV折腾的有点惨。每天除了照顾小家伙和吃饭睡觉,剩下的十四五个小时全部贡献给了它。还算有点定力吧?哈。

看标题,这又会是一个系列。OpenCV是新近接触的一个领域,目的是做移动物体的动态跟踪。本来一直想写点关于如何快速熟悉陌生技术领域的东西,干脆就着这个机会,跟着我的进度,一并写了。既可以给想接触图像识别,尤其是移动物体跟踪的朋友一点参考,又能梳理一下自己在熟悉陌生技术领域的心得。

在这个系列里,你会和我一起从头接触并熟悉OpenCV,进而利用相关内容构建知识体系并快速应用。在其中,我会逐步提炼一些快速熟悉陌生技术领域的方法论,不一定是最快的,但一定是最接地气的。

言归正传。OpenCV(Open Source Computer Vision Library)是一个基于BSD许可(开源)发行的跨平台计算机视觉库,于1999年由Intel建立,如今由Willow Garage提供支持。可以运行在Linux、Windows和Mac OS等操作系统上。它轻量级而且高效——由一系列 C 函数和少量 C++ 类构成,同时提供了Python、Ruby、MATLAB等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法。当前最新的版本是3.1.0,发布日期是2016年1月29日。

我们要做的是在Android系统上实现移动物体的动态跟踪

举个例子,打开你的手机相机,启用人脸识别选项,当手机屏幕中出现人脸时,会在人脸四周出现一个方框。比如下面的示意:



图中,在每个小朋友的头部都有一个绿色方框。当小朋友移动时,绿色方框应能跟着移动。

再高级点的功能,假设有一台机动装置,把手机安装在上面,当点击某个小朋友的绿色方框后,装置自动旋转,使小朋友头部出现在手机屏幕中央。当小朋友移动时,装置持续旋转,使小朋友头部保持在手机屏幕中央。

上面只是举个例子,实际应用中会有车辆等其他物体,不一定是人物。

当然,如果实现完整功能,需要涉及到机动装置的设计,我们在本系列中不会体现。但最最基础的,是图像识别和移动物体的动态跟踪。在本系列中会逐步逼近这一功能。

经过一段时间的选型,最终选定OpenCV这个开源项目来实现上述功能,也因而有了这篇文章。

OpenCV项目规模很大,单是Android版的开发包就有166M之大,其项目文档更是巨型无比。另外,图像处理是一个比较专业的领域,即便是仍然保留着大学那点数学基础,也不足以领略其中一二,更不用说目前几近于负的数学底子了。因此,想要完全啃透是不可能了,也没有必要。

前面之所以说了这么多,是因为我对OpenCV做了一些快速的资料搜集和了解。这是在面对陌生领域时,首先应该摆出的:

第一式:搜集资料,快速浏览

资料搜集是有技巧的。

我们在做技术选型时,会从自己所需功能出发,在搜索引擎上按照功能搜索。比如按照前面的需求,一开始我会搜“图像识别”。但搜索结果往往不会尽如人意,根据搜到的内容,比如论坛、博客等,他人会介绍或讨论自己的项目经验,于是我意识到图像识别并不是我想要的,其中更多的是头像识别。于是重新调整关键词,改为“移动物体识别”。再次搜索,会发现识别和跟踪是两种不同的动作,在实现的方法上更是天壤之别。因此,搜索的关键词改为“移动物体的动态跟踪”。

上面的例子说的是技术选型时的搜索关键词迭代。当我们获得很多可能实现目标的技术领域时,会最终确定一种技术。这里我们选中了OpenCV,接下来要做的就是如何快速熟悉它。

搜索引擎仍是我们的主要工具。母语所限,对英文的浏览速度依然比中文有一定距离,所以首选是国内网站。因此,搜索时先使用中文关键字。于是我们获得了一些如中文百科和论坛等一系列介绍。对于这些不要仔细研究,快速浏览,尽快知道OpenCV是什么,可以实现哪些功能,支持哪些平台等等。

对于大型的开源项目,往往会有相应的中文论坛,这是我们首先要去看的。比如OpenCV的中文论坛是http://www.opencv.org.cn/,我们可以率先从这里入手。要说项目资料,自然是官网最为权威,而中文论坛一般会有翻译过来的资料,以及国内开发者的讨论帖子,因此官网相应的中文论坛是上上之选。这里需要注意,仍然是快速浏览,无需细抠。

如果中文网页无法满足你的需求,就需要使用英文关键字并通过谷歌搜索。善用谷歌的自动推荐,是一个不错的技巧。搜索时采用自然语言顺序翻译,谷歌会提供相应的搜索推荐。

国内谷歌墙的厉害,作为开发者,学会翻墙是个必备技能。修改hosts文件当然可行,但IP往往变更的很快,且需要经常手动变更。除此之外,VPN是个不错的选择,当然,好的VPN会让你付出一点费用(我用的VPN是30块5个G,一般搜搜资料,用个大半年也就够了,当然如果你要上土鳖看视频神马的,还是包月的要划算些)。

经过一两天的熟悉,我们已经能够大体上熟悉这一领域,所以接下来我们可以根据功能需求学习相应的技术分支了。


    关注 FirstLog


微信扫一扫关注公众号

0 个评论

要回复文章请先登录注册