序
算是正式开始填opencv这一个坑了吧,原先也正想趁着这个机会好好地把opencv给学一遍。计划一边学习一边将学习的过程记录下来分享给大家。但老实说,在以往芒果的博客有些是为了写而写的,存在着文章结构不合理,脉络也不清晰等问题。造成这样的原因,一方面是芒果写作水平挺差的,另一方面也是由于不太上心。所以仔细想了想之后,还是认为按照一个比较合理的方式去写,去表达比较好。这么做的目的是,一是想提高芒果自己的表达能力,二也方便大家阅读。所以,芒果就琢磨着先拟个初步的文章格式出来,以后的文章就先按照这个方式写了。
以下便是芒果初步拟出的文章结构:
文章结构安排
经一番了解,发现opencv官方的samples示例有以下的一些特点
- 全英文的代码注释
- 模块化分类
- 没有相关的原理的解释,仅有代码注释
- 代码几乎都是c++的
所以针对以上的几个特点,芒果初步拟出这么一个文章的结构,分为原理、代码刨析、完整代码、翻译为python版本以及最后的一个总结。芒果就先简单地说一下这些章节如何安排的。
原理
首先是原理,原理这一块是必须的,芒果认为要想学好一个东西或者说做好一件事情,衡量的标准往往就是对其原理的掌握程度。虽然samples里面官方都只是给了代码的实现,没有附上原理的介绍,但这部分的工作就是需要我们自己去了解和学习。然而学习samples这些例子都是基于代码去学习的,代码示例也一一对应着某一个算法原理。所以了解例子背后的算法对学习也很有帮助,但这不是算法理论学习,opencv毕竟只是一个工具库,学习opencv自然偏工程和实践多一点,所以芒果计划着这个章节大概这么安排
优秀博文参考
首先列出与该sample相对应或者相关的算法原理的一些优秀博文,如果想详细了解可以参考这些博文和相关的资料。当然这些优秀的博文与相关的资料芒果也是会一一去阅读和学习,然后选出芒果认为比较适合该例子的一些,罗列分享出来。
原理的简单总结
这部分是在了解和学习了相关的算法以及原理之后,根据芒果的自身理解而对算法原理的一个简单的总结。由于芒果自身的水平所限,理解有所误差是正常的,希望这部分可以随着芒果的学习和积累后面变得越来越好吧。当然这部分将会是芒果阅读和学习了以上的优秀博文和相关资料学习而总结出来的,芒果会尽量做好吧。
代码刨析
代码刨析这一块是真正开始切入samples的内容了,这部分芒果想着是基于上一个小节的原理理解,从而去一步一步的分析和理解samples的代码。这一部分尽可能地与原理总结部分相挂钩,最好可以做到算法地原理步骤是一一对的上的。所以这部分可能不会列出所有的代码以及注释,优先突出与算法步骤相对应的关键代码,最好可以标上一个序号。与此同时,这是代码刨析的部分,加上代码又是c++语言,所以在语法以及编程的注意上面如果有需要,芒果也会提及。
完整代码
完整代码这一部分就没太多可说的,就是通读整个例子的程序代码,并且将注释翻译成中文。但为了避免芒果理解有偏差和翻译有误,我会保留英文的注释,所以完整的代码是双语注释的,英语水平可以的可以直接看英文的注释,芒果也建议看一遍英文注释。
翻译为python版本
芒果拟这一部分的原因大概有两个,一个是现在python非常的火热,不少小伙伴学习opencv也是直接学习python版本的,而opencv提供的samples又几乎都是c++的版本,所以python版本的学习资料相对还是有些匮乏的;第二个原因是芒果个人也想练习以及熟悉python语言。但由于个人原因芒果一直使用较多的语言是c++,所以芒果想着技多不压身,既然决定要学习了,就顺便把python的编码能力也练一下。
总结
总结这部分没什么可多解释的,无论什么样的文章,总得有个总结才合适。即便总结很短,这也是正确的学习习惯和学习思维所应该保持的一个习惯,总结可以使人消化知识,可以使人反思问题所在,可以使人规划未来。
更多的可能
这是芒果才花了一会儿拟出来的这么一个规划和思路,肯定是有所欠缺的,但是假如能够按照以上的要求完成,对芒果来说也是一个非常大的进步了。但随着学习下去,肯定会有问题暴露出来,也许要作调整和增添些内容,如果时间允许,芒果能力进步到一定水平了。也许还会有以下的一些可能
- 改写例子代码,例子中的代码多半都是往主函数里直接填,如果可能将对其重写,重写达到的期望是编码规范和安全以及增强可读性。
- 给算法原理部分增加一个流程图。
…
尾巴
每一次的规划和想法写到最后,都发现给自己定下的目标和要求都挺高的。也不知道芒果是否能坚持下去,不过慢慢来吧,写着写着也许就成了习惯不存在能不能坚持的问题了,就像我码字到现在才发现已经凌晨一点了。革命才刚刚开始,芒果仍需努力,大家一起加油。
本文由芒果浩明发布,转载需注明来源。 本文链接:https://blog.mangoeffect.net/opencv/opencv-samples-article-plan.html