计算机视觉OpenCv学习系列:第一部分、绪论

news2025/1/16 16:00:43

第一部分、绪论

    • 第一节、计算机视觉发展历程
      • 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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/162232.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

深入理解Disruptor

Disruptor通过缓存行填充,利用CPU高速缓存,只是Disruptor“快”的一个因素,快的另一因素是“无锁”,尽可能发挥CPU本身的高速处理性能。 1 缓慢的锁 Disruptor作为一个高性能的生产者-消费者队列系统,核心就是通过Ri…

面向对象的好处

提到面向对象的好处,一些人脑中可能会冒出:封装继承多态封装 封装:通过类,为数据和方法,提供统一的上下文 但是,函数名,同样也可以提供上下文,并且可以通过一种叫柯里化的技巧&…

比特位计数[动态规划 || bitCount计数]

二进制计数前言一、二进制计数二、动态规划 & bitCount分治统计1、bitCount分治统计2、动态规划总结参考文献前言 二进制计数可以直接基于分治去快速统计,如果是连续数的二进制计数,可以利用前面已经计算出的状态进行递推求解,即动态规划…

Python NumPy 连接数组

前言NumPy(Numerical Python的缩写)是一个开源的Python科学计算库。使用NumPy,就可以很自然地使用数组和矩阵。NumPy包含很多实用的数学函数,涵盖线性代数运算、傅里叶变换和随机数生成等功能。本文主要介绍Python NumPy 连接数组…

使用Java为何总写出C风格的代码?

“你看你所有代码都是把字段取出来计算,然后,再塞回去。各种不同层面的业务计算混在一起,将来有一点调整,所有代码都得跟着变。” 在实际的开发过程中,有不少人都这么写代码的。Java写的代码应该有Java的风格&#xf…

Karl Guttag:Quest Pro透视效果差,并不适合商用

AR/VR光学专家Karl Guttag曾指出,基于VST透视的AR虽然绕开了光学透视AR的一些局限,但VST透视依然存在运动延迟、余光视觉透视效果、分辨率、IPD不匹配等多种问题。的确,VST透视AR的结构、原理比光学透视AR更简单,但它同样需要解决…

(二十)正则表达式

目录 前言: 1.概述: 2.正则表达式体验: 3.正则表达式字符 4.正则表达式在字符串方法中的使用 5.代码演示: 6.正则表达式支持爬取信息 7.代码演示: 前言: 正则表达式,又称规则表达式,(Regular Expression,在代码中常简写为regex、regex…

SpringCloud-Netflix学习笔记05——Eureka模拟实现简单集群

前言 对于Eureka注册中心来说,如果只有一个注册中心的话,如果注册中心崩了,那么里面的服务全部用不了,系统就会崩溃。为了避免这个问题,我们可以搭建一个注册中心的集群,几个注册中心互相关联,如…

程序员别死背面试八股文了,这种面试题才是未来主流。。。

目录: 面试官为啥要出这样一个开放式问题生产消费模型及核心数据结构支撑TB级数据写入的分布式架构数据宕机场景下的高可用架构支持数据不丢失的ack机制最后的总结 1、面试官为啥要出这样一个开放式问题 这篇文章简单给大家来聊一个互联网大厂的Java面试题&#x…

【Git 从入门到精通】一文摸透Git中的分支操作

文章目录一、什么是分支?二、分支中的常用命令三、上手分支1.查看分支2.创建分支3.修改分支4.切换分支5.合并分支6.解决冲突四、分支操作原理分析一、什么是分支? 在版本控制过程中,同时推进多个任务,为每个任务,我们…

肠道核心菌——戴阿利斯特杆菌属 (Dialister)

谷禾健康 戴阿利斯特杆菌属 (Dialister) ✦ Dialister(戴阿利斯特杆菌属)是小的、厌氧或微需氧的革兰氏阴性球状或杆状菌,因次也被翻译成小杆菌属。 Dialister菌是人体肠道菌群中的一种常见菌种。该菌属物种被发现出现…

基于 Hutool 的抽奖实现与原理

前言 先大概描述下 hutool 工具是如何根据权重进行抽取,后面再结合源码进行讲解。 假设有如下奖品以及对应的权重: 奖品名称权重奖品数量谢谢参与0.76010积分0.4550IPhone 140.055Mac Book Air0.011 需要注意 谢谢参与 也算是一种奖品,因为…

SpringCloud-Netflix学习笔记04——Eureka注册中心搭建

前言 Eureka注册中心相当于Zookeeper注册中心,思想是类似的,只不过Zookeeper需要在本机上下载一个服务客户端,直接启动客户端即可,而Eureka注册中心需要我们自己动手搭建,不过也不难。 搭建步骤 1、新建一个Maven项目…

PySpark数据计算中常用的成员方法(算子)

目录 一.回顾 二.数据计算 map算子 演示 flatMap算子 演示 reduceByKey算子 演示 练习案例1 需求 解决步骤 完整代码 filter算子 演示 distinct算子 演示 sortBy算子 演示 练习案例2 解决步骤 完整代码 三.总结 一.回顾 1.RDD对象是什么?为什么要使用它? RDD对象称…

SegFormer学习笔记(1)安装

一、源码:https://github.com/sithu31296/semantic-segmentation我并没使用SegFormer的官方源码,那个mmcv特磨人了,各种奇葩配置错误。二、环境配置新建conda环境conda create -n segformer3715 python3.7.15 选用python3.7.15(纯粹的3.7.0版…

计算机原理四_内存管理

目录儿三、内存管理3.1 内存管理基础3.1.1存储器的多层结构3.1.2 进程运行基本原理进程的装入3.1.3 内存扩充3.1.4 内存的分配3.1.4.1连续分配3.1.4.2非连续分配3.1.4.2.1基本分页存储管理3.1.4.2.2基本分段存储管理3.1.4.2.3 段页式管理3.2 虚拟内存管理3.2.1 虚拟内存的概念3…

【BP靶场portswigger-客户端11】跨站点脚本XSS-10个实验(下)

前言: 介绍: 博主:网络安全领域狂热爱好者(承诺在CSDN永久无偿分享文章)。 殊荣:CSDN网络安全领域优质创作者,2022年双十一业务安全保卫战-某厂第一名,某厂特邀数字业务安全研究员&…

【Go基础】函数和面向接口编程

文章目录一、函数1. 函数的基本形式2. 递归函数3. 匿名函数4. 闭包5. 延迟调用defer6. 异常处理二、面向接口编程1. 接口的基本概念2. 接口的使用3. 接口的赋值4. 接口嵌入5. 空接口6. 类型断言7. 面向接口编程一、函数 1. 函数的基本形式 // 函数定义:a,b是形参 …

【测试】自动化测试

努力经营当下,直至未来明朗! 文章目录一、自动化概述二、自动化测试的分类三、自动化测试工具:selenium四、一个简单的自动化用例五、Selenium常用方法1. 查找页面元素:2.元素的定位(By类)小结普通小孩也要…

Java中this的用法

一、this关键字 1.this的类型:哪个对象调用就是哪个对象的引用类型 二、用法总结 1.this.data; //访问属性 2.this.func(); //访问方法 3.this(); //调用本类中其他构造方法 三、解释用法 1.this.data 这种是在成员方法中使用 让我们来看看不加this会出现什…