首页 > 其他分享 >【学习OpenCV4】如何学习OpenCV

【学习OpenCV4】如何学习OpenCV

时间:2023-02-03 17:46:29浏览次数:68  
标签:Python C++ 学习 OpenCV 算法 OpenCV4 讲解

曾经在某乎上看到有人提问:

靠OpenCV吃饭的图像算法工程师在深度学习的冲击下还有活路吗?

不知道提问这位有没有了解卷积神经网络这个东西,早在二三十年之前就有手写数字识别了,但是这技术也就是2012年开始火爆了的,所以你看到的当下的热门技术很多都是沉寂了几年、十几年甚至几十年的。

当下对传统的cv技术有些冲击,那是因为你看到的是这些岗位的工资很高,但是呢,很多公司还是在用传统的技术,至少传统行业里面涉及图像处理的很多还是使用的是传统算法的技术。就是互联网公司有团队在做这个,然后能给的工资很高,但是呢,传统方法的这些岗位也没降薪不是,所以应该是心里的冲击吧?

不过我回答的这个日子,dl(深度学习),cv(计算机视觉)也死的七七八八了,半道出家的很多,但是卷麻了,所以现在看是不是还不如你?

如果说图像算法工程师这个岗位,其实不是单纯掌握OpenCV就够的,OpenCV只是一个工具,还有很多的东西需要我们学习,图像处理还有一个出名的库就是Halcon,只是OpenCV相对比较出名而已。我也是半道出家做cv的,但是我是搭上了车之后转自动驾驶了,这一路走来我发现OpenCV的重要性还是很大的,应用还是很多的,所以我也在技术分享的时候还在推学习OpenCV。

OpenCV是应用非常广泛的开源视觉处理库,在图像处理、计算机视觉和自动驾驶中有着非常重要的作用。

废话不多说,我就来讲讲OpenCV的使用和学习需要怎么做吧,大家觉得有道理的可以参考一下。

我理解的学习和使用的重点在四个方面:

第一点:需要对OpenCV的版本要有一个清晰的认识

OpenCV目前更新到了4.7.0版本,但是目前OpenCV3.x和OpenCV4.x都是比较常用的,但是3和4的版本差别比较大,所以经常有同学抄代码的时候编译报错,就像我昨天在做目标跟踪的时候,创建跟踪器,在OpenCV3.2之前的版本里面使用的方法是Tracker.create,但是在之后的版本API就变了,对于不同的算法创建的函数还不一样,例如KCF算法就是TrackerKCF_create这样,所以我们在使用OpenCV的时候需要对OpenCV的版本有一个比较清晰的认识。

初学者学习的话最好选择新版本学习,老的版本慢慢就不会再维护了。

第二点:需要对OpenCV的源码有一个基本的了解

要知道每个模块是做啥的,这样你才能知道怎么去调用这里面的算法。目前出版的OpenCV的图书基本上只对core模块、imgproc模块和highgui模块进行讲解,所以初学者很难找到一个系统的学习途径。但是去年出版了一本图书《学习OpenCV4:基于Python的算法实战》这本书对OpenCV的所有模块都进行了讲解,虽然里面的案例是以Python语言为主,但是在讲解每个算法的API的时候是将C++和Python两种语言都做了讲解,所以函数调用层面应该问题不大,这是国内外第一本系统讲解OpenCV所有模块的书,评价销量都很不错。

第三点:首先学习怎么去用

“学以致用”永远不是一句空话,对于公司来说,最重要的就是需要写出代码,解决实际问题,所以对于初学者来说,首先需要学习OpenCV包装的函数怎么去用,能解决什么实际的问题。

对于初学者来说,最头疼的问题就是环境搭建出错和代码运行出错,解决不了还极大的削减学习的信心,看书和博客经常就是从入门到放弃,没人指点真是很难受。

说到环境搭建的问题,还是要说一下《学习OpenCV4:基于Python的算法实战》这本书,这本书将Windows、Linux上的C++和Python开发环境搭建讲的清清楚楚,还有怎么通过源码编译的方式搭建环境都有清楚的讲解,让初学者不会被环境所卡。

还有就是这门课程也做了比较清晰的讲解,课程地址:

https://edu.csdn.net/course/detail/38039

该课程的优势如下:

1、C++与Python双语教学

Python语言是在计算机视觉中应用最多的一种语言,在工作中,深度学习模型的训练基本上都是使用Python语言编写的训练代码。OpenCV在这个过程中用于图像的预处理(例如图像读取、数据增强)和后处理,还可以用于显示处理的结果,功能强大,使用方便。

但是在功能的部署的时候,不管是部署在服务端还是PC端,开发语言基本上用的是C++,所以如何有效的使用OpenCV进行模型或者功能的部署尤为重要。

C++语言应用的好坏,在面试中可以看出一个面试者的工程实践能力的强弱,两种语言的开发掌握好了可以使工作如虎添翼。

2、全模块讲解

课程讲师也是图书《学习OpenCV4:基于Python的算法实战》作者,课程不仅采用双语教学,更是对C++的每个模块都做讲解,我们知道,很多的书其实只讲imgproc,如果你翻开一本书图像的形态学运算和图像滤波都是作为独立章节讲解的,那么这本书基本上就可以确定是只是讲解了imgproc模块,但是其他的模块在工作中也有很重要的作用。

3、讲解细致

本课程会从环境搭建开始讲解,环境搭建尤为重要。从我多年的授课经验总结来看,如果只是给了代码,很多的入门用户环境问题处理不好的话,后面的学习很难进行下去,甚至会丧失学习的信心。

4、讲义准备充分

讲义准备的充分细致,标识清楚明确,重点和疑难点突出。

第四点:其次学习算法原理

这个就不用我多说了,因为如果你上来先啃算法原理的话,大概率会从入门到放弃,即使你啃下来了,不自己动手写代码,还是不知道怎么去用,不知道这些算法怎么解决实际的工程问题。所以建议大家先学会怎么去用,可以选择上面的图书对照着课程学习,里面的案例讲的非常的清晰,相信大家不会觉得学得没有兴趣的。

 

博主是《学习OpenCV4:基于Python的算法实战》和《深度学习计算机视觉实战》两本图书的作者,目前从事自动驾驶感知融合算法开发,分享内容包括深度学习、计算机视觉、OpenCV、自动驾驶、SLAM、C++/Python语言开发等方向的内容。

欢迎关注我的课程《OpenCV入门精讲(C++/Python双语教学)》,共42节课,已经更新完成:

https://edu.csdn.net/course/detail/38039

 

欢迎关注公众号“计算机视觉与OpenCV”

欢迎添加我的微信号study428加入学习交流群。

标签:Python,C++,学习,OpenCV,算法,OpenCV4,讲解
From: https://www.cnblogs.com/opencv1/p/17090008.html

相关文章

  • 基于DNN深度学习网络的OFDM信号检测算法的matlab仿真,对比LS和MMSE两个算法
    1.算法描述在OFDM系统中,信道估计器的设计上要有两个问题:**一是导频信息的选择,由于无线信道的时变特性,需要接收机不断对信道进行跟踪,因此导频信息也必须不断的传送:二是......
  • shell脚本学习教程(全网最全教学)
     1shell概述1.1什么是ShellShell是一个命令行解释器,它为用户提供了一个向Linux内核发送请求以便远程远程程序的界面系统级程序,用户可以用Shell来启动、挂起、停止甚......
  • OpenHarmony标准系统内核学习【2】CPU轻量级隔离特性
    (目录)CPU轻量级隔离特性基本概念CPU轻量级隔离特性提供了根据系统负载和用户配置来选择合适的CPU进行动态隔离的能力。内核会将被隔离CPU上的任务和中断迁移到其他合......
  • 缩点学习笔记
    假如题目名称不是“【模板】缩点”的话,是否能想到缩点?这道题如何联想到缩点?首先题目给出的图,可能存在强连通分量,这样的强连通分量中,所有的点权都可全部取到,所以如果走到......
  • 西湖论剑2023学习笔记
    太菜了打不了比赛,跟着师傅们的wp学习一下NodeMagicalLoginflag1functionFlag1Controller(req,res){try{if(req.cookies.user===SECRET_COOKIE)......
  • Markdown语法与Typora基础操作学习
    在2.2~2.3的两天时间内,我学习了Markdown语法,并且将其实践于Typora之中。在学习的过程中,Typora带给了我意想不到的惊喜,比起印象笔记和OneNote的功能,Typora丰富的快捷键设置......
  • 【学习笔记】多项式学习笔记2:集合幂级数
    点击查看目录目录集合幂级数定义运算应用子集相关运算高位前(后)缀和高维前(后)缀差分快速莫比乌斯变换\(\text{FMT(FsatMobiusTransform)}\)或卷积(集合并卷积)与卷积(集合......
  • Go 语言学习之路(笔记)
    将大佬的博客整理成相关目录。查找方便go语言安装及介绍go语言环境搭建go语言基础之变量和常量go语言基础之基本数据类型go语言基础之运算符go语言基础之流程控制Go......
  • DTD 学习
    DTD教程目录目录DTD教程目录DTD简介DTD是什么?DTD与XML的关系?为什么使用DTD?内部DTD外部DTDXML构建模块元素属性实体PCDATACDATADTD元素DTD属性DTD实体参考......
  • 快速傅里叶变换学习简记
    多项式部分是OI中一个比较math和naive的部分,各种多项式题声(chou)名(ming)远(zhao)扬(zhu)。因为作者数学较弱,因此这篇文章会比较注重数学部分的理解。同时感谢所......