OpenCV源码解析
OpenCV K-means源码解析
OpenCV 图片读取源码解析
OpenCV 视频播放源码解析
OpenCV 追踪算法源码解析
OpenCV SIFT算法源码解析
OpenCV 滤波源码分析:bilareralFilter
OpenCV 数字识别解析
只捡需要的读
读懂OpenCV源码需要哪些基础?
体会还比较深,现在回想起来,大概会有这么一些建议:
1. C++需要多了解一下,建议看看Bjarne大神的书
OpenCV的C++版本是重新写过了的。
和以前的C版本是不同的了。
和图书馆里常见的那本learn OpenCV 已经不同了。
而对于C++来说,头文件里的interface和注释其实就是文档了。
如果单从一个学图像处理,和做实现的人来说,我觉得这就够了。
但是,即使要看头文件无障碍,也需要花很多功夫:
大约就是Bjarne的书里不断强调的 interface 和 implementation如何隔离。
而openCV c++ 里面还用到了很多 范型 (templates).
因为图像处理的应用对性能比较敏感,不可能像常见的应用一样,可以允许class之间复杂的继承关系,然后在运行的时候,再去查找virtual function table。
它们需要在编译的时候,就把这种搜索完成,于是需要 compile-time polymorphism。
2. 从 OpenCV 的文档开始
我觉得不要从源代码开始,而应该从官方的文档开始。
官方的文档介绍了很多它的设计思路,尤其是 C++版本的基本数据结构很重要。
3. 如果想要了解某个特征或者处理的具体实现,源代码不是最好的途径
我记得当时实习时要用到了某个特征。
实际上就原来来讲是非常简单的。
但是,当你真的去看源代码的时候,那就不容易了。
那是根据一片后来的文章实现的线性复杂度的算法。
我个人是属于算法与数据结构功底较差的,所以,当时看源代码对我来说反而更加吃了和无从下手。
实际上,网上的,尤其是国外的公开课教程是很棒的。
OpenCV源码解析的更多相关文章
- 光流算法:Brox光流的OpenCV源码解析
OpenCV中DeepFlow代码其实是Brox光流,而非真正的DeepFlow光流,在将近一个月的研究.移植及优化过程中,对Brox光流有了较深刻的认识.我对OpenCV中源码进行了详细的分析,并以 ...
- 【opencv源码解析】 三、resize
resize.cpp void cv::resize( InputArray _src, OutputArray _dst, Size dsize, double inv_scale_x, doubl ...
- 【opencv源码解析】 二、 cvtColor
这里以CV_BGR2YUV_I420来讲 1. opencv244 core.cpp void cv::cvtColor( InputArray _src, OutputArray _dst, int ...
- ORB原理与源码解析
转载: http://blog.csdn.net/luoshixian099/article/details/48523267 CSDN-勿在浮沙筑高台 没有时间重新复制代码,只能一股脑的复制,所以代 ...
- anki_vector SDK源码解析(教程)
一:最近anki vector robot开放了Python SDK,我听到的第一时间就赶快上网查了查,先抛几个官网重要链接吧: Python编程API手册及环境搭建等: https://sdk-re ...
- 【原】Android热更新开源项目Tinker源码解析系列之三:so热更新
本系列将从以下三个方面对Tinker进行源码解析: Android热更新开源项目Tinker源码解析系列之一:Dex热更新 Android热更新开源项目Tinker源码解析系列之二:资源文件热更新 A ...
- 【原】Android热更新开源项目Tinker源码解析系列之一:Dex热更新
[原]Android热更新开源项目Tinker源码解析系列之一:Dex热更新 Tinker是微信的第一个开源项目,主要用于安卓应用bug的热修复和功能的迭代. Tinker github地址:http ...
- 【原】Android热更新开源项目Tinker源码解析系列之二:资源文件热更新
上一篇文章介绍了Dex文件的热更新流程,本文将会分析Tinker中对资源文件的热更新流程. 同Dex,资源文件的热更新同样包括三个部分:资源补丁生成,资源补丁合成及资源补丁加载. 本系列将从以下三个方 ...
- 多线程爬坑之路-Thread和Runable源码解析之基本方法的运用实例
前面的文章:多线程爬坑之路-学习多线程需要来了解哪些东西?(concurrent并发包的数据结构和线程池,Locks锁,Atomic原子类) 多线程爬坑之路-Thread和Runable源码解析 前面 ...
随机推荐
- 【UVa】1600 Patrol Robot(dfs)
题目 题目 分析 bfs可以搞,但是我还是喜欢dfs,要记忆化不然会T 代码 #include <cstdio> #include <cstring> #inc ...
- 【POJ】3616 Milking Time(dp)
Milking Time Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 10898 Accepted: 4591 Des ...
- oracle 索引使用小结
1. 普通索引 create index my_index on test (col_1); 可创建合并两列或多列的索引,最多可将32列合并在一个索引中(位图索引最多可合并30列) create in ...
- linux中awk工具
awk sed以行为单位处理文件,awk比sed强的地方在于不仅能以行为单位还能以列为单位处理文件.awk缺省的行分隔符是换行,缺省的列分隔符是连续的空格和Tab,但是行分隔符和列分隔符都可以自定义, ...
- selenium安装方式
selenium的二种安装方式 1.在线安装:打开cmd输入, pip.ext install selenium 2.离线安装,下载selenium安装包,然后解压,在cmd中进入到解压的文件中,在运 ...
- Python nonlocal 与 global 关键字解析
nonlocal 首先,要明确 nonlocal 关键字是定义在闭包里面的.请看以下代码: x = 0 def outer(): x = 1 def inner(): x = 2 print(&quo ...
- iOS学习之UIDatePicker控件使用
iOS上的选择时间日期的控件是这样的,左边是时间和日期混合,右边是单纯的日期模式. , 您可以选择自己需要的模式,Time, Date,Date and Time , Count Down Ti ...
- shell编程——流控制case和select
在shell编程里有时候需要出现交换界面,让使用者来选择要执行的功能,如下面所示,这时候就需要用到case和select进行配合 请选择功能: 1) 退出 2) 系统升级 3) 防火墙配置 4) to ...
- sql中问号是干什么的??
第一次在后台 程序中遇到sql语句中的问号: /** * * 方法描述 : 通过账号id更新该账号状态 * @param state 状态 * @param id 账号id */ @Modifying ...
- Core Data 入门
1. 基本概念 Core Data是一种被称为对象关系映射(Object-Relational Mapping,ORM)技术的实现. Core Data 架构图如下: 五个概念: (1)数据模型(Da ...