OpenCV学习笔记[1]初探OpenCV

OpenCV学习笔记:初探OpenCV


        即使在菜鸟时期,大型开源库OpenCV的名字笔者也是听说过的,在初步学习之前,我对这套库的理解仅仅限于“一组图像处理API”这样简单的层次。最近有了点时间,在阅读完官方的介绍后我发现我完全想错了,这个库所提供的功能更像是某种“视觉”,CV是计算机视觉的缩写也是后来才发现的,想想自己也真是呆的可以。


        如果让我概况,OpenCV库可以大致分为两个部分,一个是负责视觉运算的各种算法及包装,包括数据结构的定义与算法的具体实现;另一部分是为算法库提供的工具集,包括各种加速支持或是对各个平台的兼容性接口等。

        之后比较在意的地方是OpenCV近年发展中的一些事件。


        在2010年,OpenCV提供了对NVIDIA CUDA核心的加速支持,这是对利用GPU进行并行计算加速的一个尝试,有相当部分的图像处理算法可以分治,在这个基础上将子任务分给具有大量计算核心的GPU来进行并行加速是及其合理的。这让人联想起OpenCL。


        的确,在2011年,OpenCV提供了对OpenCL的支持,OpenCL是一个屏蔽设备差异的并行计算框架,笔者猜测这是否是依赖抽象而非具体实现的设计模式理念呢?此前笔者也接触过OpenCL,它的并发处理过程给了我深刻的印象。次年,也就是2012年,Intel发布了支持OpenCL的SDK,支持的CPU也是较新的三代酷睿i系列。至此,OpenCL的支持覆盖到了大部分在市面销售的显卡上(N/A/I)。


        两年后的2013年,OpenCV官方宣布将提供对Java桌面版的支持,随后不久又加入了对安卓平台的支持。虽然Java作为高级语言其运行速度的确不如C语系语言,但考虑到其灵活的编写特性,Java+JNI封装+多平台本地库的构思十分的常见。想在Java平台调用OpenCV特性的程序员(例如笔者就是一个),有了除JavaCV外的第二个选择。


        今年的4月25日,OpenCV发布了2.4.9版本,这也许时2系列的最后一个稳定版,因为在8月份官方就发布了3.0.0的Alph版,笔者不是很喜欢尝试最新的东西,因此还是选择了249版本下载,而这个类库的下载镜像竟然有348M,已经超过了Windows98的安装文件。而解压后的总大小,更是达到了3.8GB,虽然这个数字有一些水分(文档、实例占用了空间)但一个类库达到了这样的大小也让笔者吃了一惊(孤陋寡闻……)。也正是在安装完这个库后,笔者硬盘中的程序设计盘使用容量超过了游戏盘的使用容量,变成了几个盘中资源最为吃紧的盘,这是以前从未想过的事。


        总之,OpenCV库给我一种集大成的感觉,与其说是一个库不如说是很多库的结合体,同时,它的发展也很迅猛, 经常吸纳其它项目中的长处来改善自身,也是笔者使用为数不多的最新库之一了(除了它和JDK我真想不到什么其它的东西是今年发布的了),我对它还是充满了期待的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值