本文只做记录供自己回顾,查阅,但或许能帮助那些试图尝试走到新领域的有丰富android sdk开发经验的人。


虽然对JNI和C/C++仅处于了解阶段,但要学习OpenCv就必须要学习C/C++,并且应当有与之配套的非android开发环境,换句话说,尽管OpenCv4Android是针对android出的开源库,但在实际的开发当中,必须要有C/C++环境,android studio对这方面的支持依然很不好。那么在学习之前,网上关于学习目的的说明很少,就算说了也是一笔带过,这样实际很坑人的。

首先要抛开那些官方概念,对开发者而言,首先必须要认清这些东西:

1 opencv和opengl的区别。

用一句话概括,前者专注于从采集到的视觉图像中获取信息,是用机器来理解图像;后者是用机器绘制合适的视觉图像给人看。这句话可能不完全对,但对初学者而言完全可以这样看待两者。opencv库多数被用到视觉处理上,比如摄像头识别车牌等等,opengl库多数是3d绘制。

2 学习动机。

学习动机很重要,因为据我所知,图形图像领域并不比其他领域那么“吃香”,况且对于多数android开发者来说,这是全新领域与全新环境,需要很大的韧劲才能坚持下去,因为学习的过程要从C/C++及其相关环境开始,到图形图像基本概念,高等数学,最后到市场上多数的相关方面的企业里,还要学习它们自有的成型成熟的库,前路艰苦无比,更糟糕的是,你很难找到合适的学习渠道和老师。

3 基本概念

有很多基本概念,很多非专业人员看到几乎和没看到一样,就算能看到效果,也很难有多大收益。


OpenCv4Android意思是OpenCv for Android,实际上是它提供的java接口通过jni调用C/C++函数。首先是环境搭建,这是环境搭建的我看到过的最好的版本,比官方好懂好操作很多。需要注意的是opencv manager,而它是与这个问题相联系的。

环境搭建完毕,运行过一个hello world后,该如何确定学习路线呢?和android的sdk学习一样,首先需要学习我们比较熟悉的接口,相对其他的东西而言,对一张图片的处理肯定要更熟悉一些,因为或许有人过去遇到过类似处理图像的需求。那么imgproc模块应该就是首先要熟悉的,这些模块的作用,包含哪些方法,分别实现了什么功能以及达到了何种效果,应当应用在哪些场景,这些问题就是在学习该模块API的过程中应当一一解决的。


首先看概念,然后练习四种对图片的操作(openCVLibrary300模块很大,尽量不要clone)。



SLD:


http://www.ipol.im/pub/art/2012/gjmr-lsd/


滤波:

http://www.myexception.cn/image/1853919.html