• OpenCV源码解析


    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
  • 相关阅读:
    rust中的arm交叉编译
    Dockerfile简单编写
    docker常用命令
    linux下tf/u盘格式化
    rust查看支持的架构列表
    linux内核版本修改
    cgo引用外部c文件注意1
    redis服务允许外部ip访问开启
    redis密码修改
    setInterval和setTimeout的使用区别
  • 原文地址:https://www.cnblogs.com/2008nmj/p/7390409.html
Copyright © 2020-2023  润新知