OpenCV K-means源码解析

OpenCV 图片读取源码解析

OpenCV 视频播放源码解析

OpenCV 追踪算法源码解析

OpenCV SIFT算法源码解析

OpenCV 滤波源码分析:bilareralFilter

OpenCV 数字识别解析

只捡需要的读

读懂OpenCV源码需要哪些基础?

通读过C++ Primer,目前C++属于入门级, 数字图像处理基础也有。目前看不懂OpenCV源码,请问还需要哪些基础, 从哪些方面入手源码比较好呢?谢谢
回答:
半年前实习的时候,在那个公司参与用OpenCV c++版本的开发公司自己的CV库。
体会还比较深,现在回想起来,大概会有这么一些建议:

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. 如果想要了解某个特征或者处理的具体实现,源代码不是最好的途径

我记得当时实习时要用到了某个特征。
实际上就原来来讲是非常简单的。
但是,当你真的去看源代码的时候,那就不容易了。
那是根据一片后来的文章实现的线性复杂度的算法。
我个人是属于算法与数据结构功底较差的,所以,当时看源代码对我来说反而更加吃了和无从下手。

实际上,网上的,尤其是国外的公开课教程是很棒的。

祝好。https://www.zhihu.com/question/28880447

OpenCV源码解析的更多相关文章

  1. 光流算法:Brox光流的OpenCV源码解析

    OpenCV中DeepFlow代码其实是Brox光流,而非真正的DeepFlow光流,在将近一个月的研究.移植及优化过程中,对Brox光流有了较深刻的认识.我对OpenCV中源码进行了详细的分析,并以 ...

  2. 【opencv源码解析】 三、resize

    resize.cpp void cv::resize( InputArray _src, OutputArray _dst, Size dsize, double inv_scale_x, doubl ...

  3. 【opencv源码解析】 二、 cvtColor

    这里以CV_BGR2YUV_I420来讲 1. opencv244 core.cpp void cv::cvtColor( InputArray _src, OutputArray _dst, int ...

  4. ORB原理与源码解析

    转载: http://blog.csdn.net/luoshixian099/article/details/48523267 CSDN-勿在浮沙筑高台 没有时间重新复制代码,只能一股脑的复制,所以代 ...

  5. anki_vector SDK源码解析(教程)

    一:最近anki vector robot开放了Python SDK,我听到的第一时间就赶快上网查了查,先抛几个官网重要链接吧: Python编程API手册及环境搭建等: https://sdk-re ...

  6. 【原】Android热更新开源项目Tinker源码解析系列之三:so热更新

    本系列将从以下三个方面对Tinker进行源码解析: Android热更新开源项目Tinker源码解析系列之一:Dex热更新 Android热更新开源项目Tinker源码解析系列之二:资源文件热更新 A ...

  7. 【原】Android热更新开源项目Tinker源码解析系列之一:Dex热更新

    [原]Android热更新开源项目Tinker源码解析系列之一:Dex热更新 Tinker是微信的第一个开源项目,主要用于安卓应用bug的热修复和功能的迭代. Tinker github地址:http ...

  8. 【原】Android热更新开源项目Tinker源码解析系列之二:资源文件热更新

    上一篇文章介绍了Dex文件的热更新流程,本文将会分析Tinker中对资源文件的热更新流程. 同Dex,资源文件的热更新同样包括三个部分:资源补丁生成,资源补丁合成及资源补丁加载. 本系列将从以下三个方 ...

  9. 多线程爬坑之路-Thread和Runable源码解析之基本方法的运用实例

    前面的文章:多线程爬坑之路-学习多线程需要来了解哪些东西?(concurrent并发包的数据结构和线程池,Locks锁,Atomic原子类) 多线程爬坑之路-Thread和Runable源码解析 前面 ...

随机推荐

  1. 为什么要用webUI?

    先看看身边有哪些软件已经在用webUI: 1.QQ查找窗口: 2.LOL主界面: 3.EC营销软件功能界面: 三个例子足以说明一切: 1.HTML是目前在用户体验.界面舒适度最先进的语言 2.HTML ...

  2. Android:ScaleType与Matrix相关

    关于ScaleType,网上介绍这个枚举对象的文章很多了,不过基本都只是介绍了它的效果.我在做可缩放移动的ImageView时,为了实现图片的缩放和拖动,需要记录图片的原始Matrix,在使用过程中发 ...

  3. angularJS开发碰到的问题

    bootstarp css无法加载 http://stackoverflow.com/questions/27656503/how-to-make-yo-angular-load-bootstrap- ...

  4. ETL开源工具kettle学习笔记

    一 Kettle配置与部署 参考1:http://www.cnblogs.com/limengqiang/archive/2013/01/16/KettleApply1.html 1.下载kettle ...

  5. HTTP接口开发专题四(接收http接口发送过来的请求)

    前面讲了调用http接口的操作,这篇讲下接收http接口的操作.(以Spring MVC为例) 1)如果发送过来的内容类型是application/x-www-form-urlencoded ,则按照 ...

  6. leetcode575

    public class Solution { public int DistributeCandies(int[] candies) { var dic = new Dictionary<in ...

  7. Selinux相关

    SELinux相关的工具 /usr/bin/setenforce 修改SELinux的实时运行模式 setenforce 1 设置SELinux 成为enforcing模式 setenforce 0 ...

  8. MantisBT 缺陷管理系统

    简介: 公司需要一套缺陷管理系统,这种系统比较热门的有 Jira.Redmine.MantisBT 等. 这次来整理一下 MantisBT,正好公司需要,以前的文档又丢失了. 下载地址:http:// ...

  9. ServletContextListener中@Autowired失效的解决方法

    @WebListener public class ContextWebListener implements ServletContextListener { @Override public vo ...

  10. jquery 报错 Uncaught TypeError: Illegal invocation

    遇到这个错误 请检查你的ajax提交方法的参数 1 参数是否都有定义 2 参数个数是否一致 3参数是否都有值(******)