第一部分、绪论
- 第一节、计算机视觉发展历程
- 1.计算机视觉发展历史
- 2.计算机视觉的主要任务
- 3.计算机视觉的应用场景
- 第二节、计算机视觉框架
- 1.早期计算机视觉框架概述
- 2.当前主流的框架与路线
- 3.计算机视觉框架的未来趋势
- 第三节、OpenCV框架
- 1.OpenCV的发展历史
- 2.OpenCV模块架构
- 3.OpenCV安装与支持
- 学习参考
第一节、计算机视觉发展历程
1.计算机视觉发展历史
计算机视觉的发展从古代小孔成像,到近现代的相机,再到后来成为一个正式学科,计算机视觉其实就是两方面内容重建
和识别
。
Pascal VOC是一个做计算机视觉的基础数据集,包括图像分类,图像识别,语义分割等等。
2012年之后,人们逐渐讲计算机视觉迁移到了深度学习领域。
未来的世界肯定都是在像素
中的,而这些都离不开计算机视觉。
2.计算机视觉的主要任务
早期,计算机视觉主要研究领域是重建。
2012年之后,计算机视觉在感知和重建两个领域受到了深度学习影响,快速发展。
目标是:通过图灵测试
。(即,达到和人类视觉一模一样的感知和重建)
3.计算机视觉的应用场景
- 自动驾驶/辅助驾驶
- 机器视觉-AI+机构(主要是视觉的算法) / 工业质检智能
- 安防监控-人脸识别 / 火灾监控 / 异常监控 (主要是一些人不好去实现的监控,比如24h监控,火灾现场的监控)
- 其他更多行业(尤其在生物医药的细胞检测,病理切片等等应用非常广泛)
所以说计算机视觉已经从一个简单的学科,变到落地在千行百业。
第二节、计算机视觉框架
我们如何把现在的计算机视觉的框架应用到我们的实际使用中来。
1.早期计算机视觉框架概述
Matrox mil
在机器视觉领域至今依然很好用。
Halcon
的框架也是做机器视觉非常好用的一个框架,到现在做一些机器视觉也很好用。
Opencv
到现在已经集成了很多的传统框架,而且是开源的。
VisionPro
也是现在很常用的一个机器视觉的框架。
注意:只有OpenCV是开源免费的,其他三个都是商业收费的。
右面这些是把OpenCV包在各种东西中使用。
有了深度学习之后,将OpenCV应用到深度学习就是下面这些。左图是深度学习模型的训练框架,右图是专门针对视觉的部署框架。
2.当前主流的框架与路线
注意就是只有OpenCV是开源免费的。
深度学习只有把训练框架和部署框架结合起来才能更好的使用。
在计算机视觉领域主流的语言就是python和c++。(这两个语言都要会)
3.计算机视觉框架的未来趋势
现在的一些趋势
- 低代码平台流行趋势明显(原来很多行的代码现在几行就可以实现)
- 传统视觉跟深度学习整合趋势明显
- 算法设计流程化/可视化
- 算法模块易用性跟通用性
- 计算资源异构化支持趋势
- 深度学习模型训练简捷化(对于代码能力比较弱的,可以在模型调参调优方面搞得好一点,不用自己写深度学习的模型)
未来的一些趋势
- 无代码化(不是不写代码,而是对于算法的代码可以复用,只需要写一些简单的调用流程)
- 算法设计流程可视化
- 导出部署支持多种语言
- 计算资源支持异构化算法model zoo丰富化,本地与云端(模型市场就是说提供一个hub这种开源平台,可以在上面上传自己写的包,丰富model)
- 开发者都可以贡献算法
第三节、OpenCV框架
1.OpenCV的发展历史
OpenCV1.0是C语言的接口,到了OpenCV2.0变成C++的接口,去避免一些内存泄漏的问题。
2012年就变成由开源社区来管理。
OpenCV4.x与之前的OpenCV3.x差别是很大的,如果在不同版本下写代码,迁移的时候需要做修改,建议用4.x来学习。
官方的话:OpenCV4.x is more than OpenCV.
(自豪)
2.OpenCV模块架构
因为OpenCV是开源的,所以了解模块架构之后我们在自己编译的时候,可以勾掉一些自己不需要的模块。
非官方版本的OpenCV也可以支持C#。
-
github开源的源码(c和c++): https://github.com/opencv
-
Tutorial教程:https://docs.opencv.org/4.5.5/index.html
-
官方教程支持C++、Python
-
Opencv-python安装包(对于课程学习安装这个就够了)
-
Opencv-contrib-python安装包(这个是包括一些扩展包的)
3.OpenCV安装与支持
建议使用Python3.6.5是因为比较稳定,和各种模块一起使用都没有不兼容的情况。
我使用的是Python3.9.12的版本,使用Anaconda之后他是自己已经集成好的OpenCV,具体如下:
同时发现在Pycharm中引入Anconda包的pytorch之后,他也自带了OpenCV。
Decould codelab平台:英特尔® Developer Cloud for the Edge 概述 (intel.cn)
注意:在验证邮箱的时候需要等一会,它会自动去完成重定向。
如果登陆成功就是这个页面,注意:这个平台账号有效期一次只有30天,我们需要提前去延期,不然会账号数据丢失。
登录完成之后点击下方的jupyter教程
的链接,然后点击OpenCV Tutorial
。
然后就会进入一个类似jupyterlab的地方,注意教程中的这些地址是非常关键的。
注意:这个实验室平台里已经集成了各种包,我们就不需要自己去配包了
示例代码中这一句非常关键,意思是,我们读入的cv图片是BGR的,我们需要先把他转换成RGB再使用。
在Launcher中我们可以选择使用的版本类型,我是用的是下面红框中的版本。
写一个简单的代码输出data中自带的一张图片,如果不转换BGR为RGB效果如下面第二个图所示:
import cv2 as cv
import matplotlib.pyplot as plt
src = cv.imread("./data/cat.jpg") # BGR格式读入
rgb = cv.cvtColor(src,cv.COLOR_BGR2RGB)
plt.title("OpenCV Hello a cat")
plt.imshow(rgb)
学习参考
本系列所有OpenCv相关的代码示例和内容均来自博主学习的网站:opencv_course