Lesson1-1:OpenCV简介

图像处理

学习目标

  • 了解图像的起源
  • 知道数字图像的表示

1 图像的起源

1.1 图像是什么

  图像是人类视觉的基础,是自然景物的客观反映,是人类认识世界和人类本身的重要源泉。“图”是物体反射或透射光的分布,“像“是人的视觉系统所接受的图在人脑中所形版的印象或认识,照片、绘画、剪贴画、地图、书法作品、手写汉学、传真、卫星云图、影视画面、X光片、脑电图、心电图等都是图像。—姚敏. 数字图像处理:机械工业出版社,2014年。
在这里插入图片描述

1.2 模拟图像和数字图像

  图像起源于1826年前后法国科学家Joseph Nicéphore Niépce发明的第一张可永久保存的照片,属于模拟图像。模拟图像又称连续图像,它通过某种物理量(如光、电等)的强弱变化来记录图像亮度信息,所以是连续变换的。模拟信号的特点是容易受干扰,如今已经基本全面被数字图像替代。
  在第一次世界大战后,1921年美国科学家发明了Bartlane System,并从伦敦传到纽约传输了第一幅数字图像,其亮度用离散数值表示,将图片编码成5个灰度级,如下图所示,通过海底电缆进行传输。在发送端图片被编码并使用打孔带记录,通过系统传输后在接收方使用特殊的打印机恢复成图像。
在这里插入图片描述
  1950年左右,计算机被发明,数字图像处理学科正式诞生。

  模拟图像和数字图像的对比,我们可以看一下:

在这里插入图片描述

2 数字图像的表示

2.1 位数

  计算机采用0/1编码的系统,数字图像也是利用0/1来记录信息,我们平常接触的图像都是8位数图像,包含0~255灰度,其中0,代表最黑,1,表示最白。
在这里插入图片描述
人眼对灰度更敏感一些,在16位到32位之间。
在这里插入图片描述

2.2 图像的分类

二值图像:
 &ems;一幅二值图像的二维矩阵仅由0、1两个值构成,“0”代表黑色,“1”代白色。由于每一像素(矩阵中每一元素)取值仅有0、1两种可能,所以计算机中二值图像的数据类型通常为1个二进制位。二值图像通常用于文字、线条图的扫描识别(OCR)和掩膜图像的存储。

灰度图:
  每个像素只有一个采样颜色的图像,这类图像通常显示为从最暗黑色到最亮的白色的灰度,尽管理论上这个采样可以任何颜色的不同深浅,甚至可以是不同亮度上的不同颜色。灰度图像与黑白图像不同,在计算机图像领域中黑白图像只有黑色与白色两种颜色;但是,灰度图像在黑色与白色之间还有许多级的颜色深度。灰度图像经常是在单个电磁波频谱如可见光内测量每个像素的亮度得到的,用于显示的灰度图像通常用每个采样像素8位的非线性尺度来保存,这样可以有256级灰度(如果用16位,则有65536级)。

彩色图
  每个像素通常是由红(R)、绿(G)、蓝(B)三个分量来表示的,分量介于(0,255)。RGB图像与索引图像一样都可以用来表示彩色图像。与索引图像一样,它分别用红(R)、绿(G)、蓝(B)三原色的组合来表示每个像素的颜色。但与索引图像不同的是,RGB图像每一个像素的颜色值(由RGB三原色表示)直接存放在图像矩阵中,由于每一像素的颜色需由R、G、B三个分量来表示,M、N分别表示图像的行列数,三个M x N的二维矩阵分别表示各个像素的R、G、B三个颜色分量。RGB图像的数据类型一般为8位无符号整形,通常用于表示和存放真彩色图像。


总结

  1. 图像是什么

  图:物体反射或透射光的分布

  像:人的视觉系统所接受的图在人脑中所形版的印象或认识

  1. 模拟图像和数字图像

  模拟图像:连续存储的数据,

  数字图像:分级存储的数据

  1. 数字图像

  位数:图像的表示,常见的就是8位

  分类:二值图像,灰度图像和彩色图像

OpenCV简介

学习目标

  • 了解OpenCV是什么

  • 能够独立安装OpenCV


1 什么是OpenCV

1.1 OpenCV简介

在这里插入图片描述
  OpenCV是一款由Intel公司俄罗斯团队发起并参与和维护的一个计算机视觉处理开源软件库,支持与计算机视觉和机器学习相关的众多算法,并且正在日益扩展。

OpenCV的优势:

  1. 编程语言
      OpenCV基于C++实现,同时提供python, Ruby, Matlab等语言的接口。OpenCV-Python是OpenCV的Python API,结合了OpenCV C++ API和Python语言的最佳特性。
  2. 跨平台
      可以在不同的系统平台上使用,包括Windows,Linux,OS X,Android和iOS。基于CUDA和OpenCL的高速GPU操作接口也在积极开发中
  3. 活跃的开发团队
  4. 丰富的API
      完善的传统计算机视觉算法,涵盖主流的机器学习算法,同时添加了对深度学习的支持。
1.2 OpenCV-Python

  OpenCV-Python是一个Python绑定库,旨在解决计算机视觉问题。

  Python是一种由Guido van Rossum开发的通用编程语言,它很快就变得非常流行,主要是因为它的简单性和代码可读性。它使程序员能够用更少的代码行表达思想,而不会降低可读性。

  与C / C++等语言相比,Python速度较慢。也就是说,Python可以使用C / C++轻松扩展,这使我们可以在C / C++中编写计算密集型代码,并创建可用作Python模块的Python包装器。这给我们带来了两个好处:首先,代码与原始C / C++代码一样快(因为它是在后台工作的实际C++代码),其次,在Python中编写代码比使用C / C++更容易。OpenCV-Python是原始OpenCV C++实现的Python包装器。

  OpenCV-Python使用Numpy,这是一个高度优化的数据库操作库,具有MATLAB风格的语法。所有OpenCV数组结构都转换为Numpy数组。这也使得与使用Numpy的其他库(如SciPy和Matplotlib)集成更容易。

2 OpenCV部署方法

  安装OpenCV之前需要先安装numpy, matplotlib。

  创建Python虚拟环境cv, 在cv中安装即可。

  先安装OpenCV-Python, 由于一些经典的算法被申请了版权,新版本有很大的限制,所以选用3.4.3以下的版本

pip install opencv-python==3.4.2.17

  现在可以测试下是否安装成功,运行以下代码无报错则说明安装成功。

import cv2
# 读一个图片并进行显示(图片路径需自己指定)
lena=cv2.imread("1.jpg")
cv2.imshow("image",lena)
cv2.waitKey(0)

  如果我们要利用SIFT和SURF等进行特征提取时,还需要安装:

pip install opencv-contrib-python==3.4.2.17

总结

  1. OpenCV是计算机视觉的开源库

优势:

  • 支持多种编程语言
  • 跨平台
  • 活跃的开发团队
  • 丰富的API
  1. 能够独立的安装OpenCV-python

OpenCV的模块

学习目标

  • 了解OpenCV的主要模块

1 OpenCV的模块

下图列出了OpenCV中包含的各个模块:
在这里插入图片描述
其中core、highgui、imgproc是最基础的模块,该课程主要是围绕这几个模块展开的,分别介绍如下:

  • core模块实现了最核心的数据结构及其基本运算,如绘图函数、数组操作相关函数等。
  • highgui模块实现了视频与图像的读取、显示、存储等接口。
  • imgproc模块实现了图像处理的基础方法,包括图像滤波、图像的几何变换、平滑、阈值分割、形态学处理、边缘检测、目标检测、运动分析和对象跟踪等。

对于图像处理其他更高层次的方向及应用,OpenCV也有相关的模块实现

  • features2d模块用于提取图像特征以及特征匹配,nonfree模块实现了一些专利算法,如sift特征。
  • objdetect模块实现了一些目标检测的功能,经典的基于Haar、LBP特征的人脸检测,基于HOG的行人、汽车等目标检测,分类器使用Cascade Classification(级联分类)和Latent SVM等。
  • stitching模块实现了图像拼接功能。
  • FLANN模块(Fast Library for Approximate Nearest Neighbors),包含快速近似最近邻搜索FLANN 和聚类Clustering算法。
  • ml模块机器学习模块(SVM,决策树,Boosting等等)。
  • photo模块包含图像修复和图像去噪两部分。
  • video模块针对视频处理,如背景分离,前景检测、对象跟踪等。
  • calib3d模块即Calibration(校准)3D,这个模块主要是相机校准和三维重建相关的内容。包含了基本的多视角几何算法,单个立体摄像头标定,物体姿态估计,立体相似性算法,3D信息的重建等等。
  • G-API模块包含超高效的图像处理pipeline引擎

总结

  1. OpenCV 的模块
    core:最核心的数据结构
    highgui:视频与图像的读取、显示、存储
    imgproc:图像处理的基础方法
    features2d:图像特征以及特征匹配

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

OpenStack(T版)——对象存储(Swift)服务介绍与安装

文章目录 OpenStack(T版)——对象存储(Swift)服务介绍与安装安装和配置(controller)准备安装和配置Swift对象存储服务组件创建账户 Ring创建容器 Ring创建对象 RingSwift 存储系统的主配置文件修改文件属主 安装和配置(compute)准备配置Swift对象存储服务组件 验证(1)加载环境变…

java压测工具 Jmeter初使用

一. 下载及安装教程 1. 有博主总结的很好,这里直接放传送门: 【Jmeter】win 10 / win 11:Jmeter 下载、安装、汉化、新机迁移、版本更新(Jmeter 4 以上版本均适用) 2. Jmeter 自定义创建桌面快捷方式 3. JMeter插件…

I/O复用的高级应用三——同时处理TCP和UDP服务

截至目前学习,我们讨论过的服务器程序都只监听一个端口。但在实际应用中,有不少服务器程序能同时监听多个端口,比如超级服务inetd和android的调试服务adbd。 从bind系统调用的参数看,一个socket只能与一个socket地址绑定&#xff…

Amdahl定律

Amdahl定律 例:设改进前系统执行时间为3s,改进后系统执行时间为2s 则:加速比3/2 即计算机改进后比改进前快了1.5倍 Amdahl定律影响因素 公式推导 可改进的系统比例为fe,则不可改进的部分比例为(1-fe) 不可改进的部分耗时为T0 * (1- fe) 设改进后部件耗时为T,则…

RISC-V处理器的设计与实现(三)—— 上板验证(基于野火征途Pro开发板)

文章目录 RISC-V处理器的设计与实现(一)—— 基本指令集_Patarw_Li的博客-CSDN博客 RISC-V处理器的设计与实现(二)—— CPU框架设计_Patarw_Li的博客-CSDN博客 RISC-V处理器的设计与实现(三)—— 上板验…

考研算法35天:三元组的最小距离 【双指针,滑动窗口,多路归并】

算法详解 多路归并;多路归并算法从理论到应用(易懂)_留恋单行路的博客-CSDN博客 多路归并就是将多个已经归并排序排好序的数组再进行排序(不一定是通过归并排序)。 算法题目 这道题就是一般做法是先通过排序将三个数组排好然后再进行三指针求最小。但…

Tuxera NTFS2023Mac电脑免费U盘硬盘读写工具

Mac用户在使用NTFS格式移动硬盘时,会遇到无法写入硬盘的情况。要想解决无法写入的问题,很多人选择使用Mac读写软件。面对市面上“众多”的读写硬盘软件,用户应该怎么选择呢?初次接触移动硬盘的伙伴可能不知道移动硬盘怎么和电脑连…

CAT1模块 EC800M HTTP使用总结记录

分享记录一下 CAT1 模块EC800 HTTP 协议使用流程 ...... by 矜辰所致目录 前言一、基础说明1.1 CAT1 与 4G1.2 EC800M 模块1.3 HTTP 二、开始使用2.1 硬件设计部分2.2 模块上电流程2.3 PDP 上下文2.3.1 什么是 SGSN 和 GGSN ? 三、 HTTP 流程3.1 客户端3.1.1 PDP 上…

NoSQL之 Redis 配置与优化

目录 一、关系型数据库与非关系型数据库1.1 关系型数据库:1.2 非关系型数据库1.3 关系型数据库和非关系数据库的区别1.3.1 数据存储方式不同1.3.2 扩展方式不同1.3.3 对事务性的支持不同 1.4 非关系型数据库的产生背景1.5 总结 二、Redis介绍三、 Redis 的优点四、 …

数据竞赛复现代码的 Docker 镜像制作指南

文章目录 一、前言二、主要内容1. Docker Desktop?2. VMware17 CentOS Linux Xshell 三、总结 🍉 CSDN 叶庭云:https://yetingyun.blog.csdn.net/ 一、前言 主要的要求: 通过 Dockerfile 文件创建 Docker 镜像,数据…

springboot基于keytool实现https的双向认证

一、环境准备 服务器信息如下: 操作系统说明server-one服务器1server-two服务器2 二、keytool命令解释 -genkey 表示要创建一个新的密钥。 -alias 表示 keystore 的别名。 -keyalg 表示使用的加密算法是 RSA ,一种非对称加密算法。 -keysize 表示密…

网络原理之传输层与网络层重点协议

目录 传输层重点协议 TCP协议 TCP协议段格式 TCP原理 确认应答机制(安全机制) 超时重传机制(安全机制) 连接管理机制(安全机制) 滑动窗口(效率机制) 流量控制(安…