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. 【BZOJ】1926: [Sdoi2010]粟粟的书架(暴力+主席树)

    题目 传送门:QWQ 分析 两道题目 第一问暴力预处理 用$ a[i][j][k] $和$ s[i][j][k] $ 表示从$ (1,1) $ 到 $ (i,j) $ 这个矩形中比k大的数的个数和这些 ...

  2. 解决IIS无响应假死状态

    方法一: 临时解决办法:在IIS中选择你的网站,右击->属性,选择主目录选项卡,最下面有个应用程序池选项,记住该处的名字,然后在IIS中找到应用程序池并展开,选择你刚才看到的那个名字,右击-&g ...

  3. sqlldr加载 数据文件的字段超出最大长度

    SQLLOAD数据的时候,建表给的字段给够了,建表已经给到VHARCHAR2(1024)了,实际数据是VHARCHAR2(256).加载报错"数据文件的字段超出最大长度"查了半天, ...

  4. linux 利用nethogs查看某进程的网卡流量

    一.nethogs介绍 分享一个linux 下检测系统进程占用带宽情况的检查.来自github上的开源工具. 它不依赖内核中的模块.当我们的服务器网络异常时,可以通过运行nethogs程序来检测是那个 ...

  5. Mysql Docker Container Command

    Hello, in my docker-compose file I have the following: db: image: mysql command: mysqld --character- ...

  6. centos7.3安装python3.6.5

    最近在玩django,想部署个网站试试,结果发现线上默认的centos用得居然是python2.7.5,那么先升级下吧,到python3.6.5 yum安装时python2.7.5 那么编译安装吧 那 ...

  7. SharePreferences基本用法

    Android提供的轻量级数据储存方法,一般存少量数据,比如配置什么的.方式是通过键值对存取,比较方便. 下面通过一个 记住密码 的简单例子来说明 public class MainActivity ...

  8. Spring实战之切面编程

    如果要重用通用功能的话,最常见的面向对象技术是继承(inheritance)或委托(delegation).但是,如果在整个应用中都使用相同的基类,继承往往会导致一个脆弱的对象体系:而使用委托可能需要 ...

  9. 在线浏览office 文件

    http://blog.csdn.net/binyao02123202/article/details/20051683 [Asp.net]常见word,excel,ppt,pdf在线预览方案,有图有 ...

  10. WebSocket实践——Java实现WebSocket的两种方式

    什么是 WebSocket? 随着互联网的发展,传统的HTTP协议已经很难满足Web应用日益复杂的需求了.近年来,随着HTML5的诞生,WebSocket协议被提出,它实现了浏览器与服务器的全双工通信 ...