视频结构化从入门到精通——图像算法类型介绍

视频结构化主要图像算法

1 认识“数组、矩阵和张量”

1.1 什么是维度

在这里插入图片描述

在图像算法中,“维度”这个概念非常重要,它描述了数据的结构和形状。在不同的上下文中,维度可能有不同的含义,但总体来说,它们都与数据的排列方式和复杂度有关。

2. 图像的空间维度

  • 二维(2D)图像:图像通常是二维的,由宽度和高度表示。例如,一个 256x256 的灰度图像可以看作是一个包含 256 行和 256 列的矩阵,每个元素表示图像中对应像素的灰度值。
  • 三维(3D)图像:如果图像包含颜色信息,它通常是一个三维数组。比如一个 RGB 图像,每个像素由红、绿、蓝三个通道的值组成,所以一个 256x256 的彩色图像可以表示为一个 256x256x3 的三维数组,其中第三个维度(通道)表示颜色。

在这里插入图片描述

3. 数据的维度

  • 在图像处理和计算机视觉中,“维度”也可能指的是特征空间的维度。例如,在图像分类任务中,每个图像可能被表示为一个高维向量,其中每个维度代表图像的某一特征(例如颜色、纹理、边缘信息等)。这些特征向量的维度数量决定了数据在特征空间中的维度。
  • 一维数据:指的是一维数组或序列,如一条时间序列。向量
  • 二维数据:一般是矩阵形式,如灰度图像。矩阵
  • 三维数据:常见于彩色图像(包括多个通道)或视频帧(时间、空间、通道)。张量
  • 更高维数据:用于处理多通道或多模态数据,如视频数据(时间、空间、通道、样本)或医学成像数据(例如 MRI 扫描,通常具有多个切片)。

在这里插入图片描述

4. 模型和算法中的维度

  • 在深度学习模型中,特别是在卷积神经网络(CNN)中,维度的概念也很重要。卷积层的输出通常是一个多维张量,通常包括批量大小、通道数、高度和宽度。例如,一个 CNN 的输出可能是一个 64x256x256x3 的张量,这表示 64 个样本的批次,每个样本为 256x256 的图像,并且有 3 个通道。
  • 卷积核的维度:卷积核本身也是有维度的,例如 3x3x3 的卷积核表示对每 3x3 的区域进行卷积操作,并且应用在 3 个通道上。

5. 维度和计算复杂度

  • 数据维度的增加通常会导致计算复杂度的增加。例如,处理高分辨率图像时,由于像素数量的增加,算法需要处理的维度也随之增加,这通常会导致更高的计算成本。
  • 维度的增加还可能引发“维度灾难”问题,即随着维度的增加,数据之间的距离可能变得难以区分,影响算法的性能。这在高维特征空间中特别显著。

6. 降维

  • 在图像处理中,有时会通过降维(如主成分分析(PCA)或卷积操作)来减少数据的维度,以降低计算复杂度或提取更有意义的特征。

2 认识“图片和视频”

简而言之,图片和视频的关系就像是点和线的关系:图片是视频的基本组成单位,而视频则是由一系列按时间顺序排列的图片组成的连续动态媒体。理解这一关系有助于更好地处理和应用图像与视频技术。

在这里插入图片描述

图片和视频在数字媒体中密切相关,它们的关系可以从以下几个方面来解释:

1. 基本定义和构成

  • 图片:图片是一种静态的视觉媒体,由像素构成,表示某一时刻的视觉信息。图片可以是灰度图像、彩色图像等。
  • 视频:视频是由一系列连续的图片(也称为帧)按时间顺序播放而成的动态媒体。每一帧都是一张静态的图片,当这些帧快速播放时,给人一种连续运动的感觉。

2. 帧率 (Frame Rate)

  • 视频的帧率表示每秒钟播放的图片(帧)的数量,通常以 FPS(Frames Per Second)为单位。例如,24 FPS 的视频意味着每秒钟有 24 张图片被播放。
  • 帧率的高低直接影响视频的流畅度。较高的帧率(如 60 FPS)通常会产生更加流畅和自然的视觉效果,而较低的帧率(如 15 FPS)可能会显得卡顿。

3. 时间维度

  • 图片是一个二维空间数据,没有时间维度。
  • 视频不仅包含二维空间数据,还包含时间维度。在时间轴上,每一帧的图片表示一个时间点上的场景。因此,视频可以看作是随着时间变化的一系列图片的集合。

4. 存储和压缩

  • 单张图片的存储通常较为简单,可以使用各种格式(如 JPEG、PNG、BMP)进行保存。
  • 视频通常需要更多的存储空间,因为它包含了大量的图片(帧)。为了减少存储需求,视频常使用压缩技术(如 H.264、H.265 编码),将相邻帧之间的冗余信息去除,只存储变化部分。

5. 编辑与处理

  • 图片编辑通常包括调整颜色、亮度、裁剪、旋转等操作。
  • 视频编辑不仅包括对单帧图片的处理,还包括对多个帧之间的过渡、剪辑、添加特效、配音等。视频编辑时常用到时间轴工具,以便在时间维度上进行精确的调整。

6. 实际应用

  • 图片常用于静态展示,如照片、插图、图表等。
  • 视频则用于动态展示,如电影、电视节目、视频广告等。视频能够传达更复杂的故事或信息,因为它可以展示随时间变化的场景和声音。

7. 技术上的相互转换

  • 可以将视频中的每一帧提取为独立的图片,这种操作常用于视频分析、监控等领域。
  • 相反,也可以将一组相关联的图片按照时间顺序合成一个视频,这在动画制作或幻灯片展示中非常常见。

3.图像分类

图像分类是计算机视觉中的一个核心任务,指的是将输入的图像分配到一个预定义的类别中。具体来说,图像分类模型会分析输入的图像并判断其最可能属于哪个类别,如“猫”、“狗”、“汽车”等。图像分类是将输入的图像分配到预定义类别的过程,是计算机视觉中的基础任务,广泛应用于各个领域。

1. 工作原理

  • 输入图像:模型接受一张图片作为输入。
  • 特征提取:通过卷积神经网络(CNN)或其他方法,模型提取图像中的重要特征,如边缘、纹理、颜色模式等。
  • 分类器:特征被输入到分类器中,通常是一个全连接层或逻辑回归层,用于输出每个类别的概率。
  • 预测输出:最终模型会输出一个概率分布,表示图像属于各个类别的可能性。类别对应的概率最高的那个标签会作为图像的分类结果。

2. 应用场景

  • 物体识别:识别图像中的物体并进行分类,如自动驾驶中的交通标志识别。
  • 面部识别:将人脸图像分类到不同的身份类别中,常用于安全和认证系统。
  • 医疗影像分析:分类医学图像中的异常区域,如检测 X 光片中的肺癌。
  • 文档分类:对扫描的文档或手写内容进行分类,如分类发票、信件等。

3. 常用模型

  • 经典神经网络(如 LeNet, AlexNet, VGG, ResNet):这些是用于图像分类的深度学习模型,它们通过大量的图像数据进行训练,具有很强的特征提取和分类能力。
  • 迁移学习:使用在大型数据集上预训练的模型(如 ResNet、Inception),然后对特定任务进行微调,从而实现快速而准确的分类。

4. 挑战

  • 类别不平衡:有些类别在训练数据中出现的次数比其他类别少,可能导致模型对这些类别的预测不准确。
  • 图像噪声:低质量的图像或包含噪声的图像可能会影响分类的准确性。
  • 多标签分类:有时一张图像可能属于多个类别(如同时包含猫和狗),这就需要模型能处理多标签分类问题。

5. 评价指标

  • 准确率(Accuracy):正确分类的图像数量占总图像数量的比例。
  • 混淆矩阵:用于评估模型在不同类别上的表现,展示每个类别的分类结果。
  • 精度(Precision)、召回率(Recall)和 F1 分数:用于评价模型在处理不平衡数据集时的表现。

4. 目标检测

目标检测(Object Detection)是计算机视觉中的一种核心任务,旨在在图像或视频中定位并识别特定的目标物体。与图像分类不同,图像分类只是将整个图像归类到某个类别,而目标检测不仅要判断图像中是否存在某类物体,还要在图像中精确地标记出该物体的位置(通常以边界框的形式表示)。

1. 工作原理

  • 输入图像:目标检测算法接收一张图像作为输入。
  • 特征提取:使用卷积神经网络(CNN)等技术从图像中提取特征。
  • 候选区域生成:在图像中生成多个可能包含目标的候选区域,这些区域可能是通过滑动窗口或基于特征的区域提取方法得到的。
  • 目标分类和定位:对每个候选区域进行分类,判断其是否包含特定目标,并精确定位目标的位置,输出一个边界框(bounding box)。
  • 输出:算法输出包含目标的类别标签、置信度分数以及目标在图像中的位置(通常是一个矩形框的坐标)。

2. 常见方法

  • 传统方法
    • 滑动窗口法:在图像上以不同大小和比例的窗口进行滑动,检查每个窗口中的内容。这种方法计算成本高且效率较低。
    • Haar级联分类器:基于特征的分类器,常用于人脸检测。虽然在实时性上表现较好,但在检测复杂物体时表现有限。
  • 深度学习方法
    • R-CNN 系列:区域卷积神经网络(R-CNN)、快速 R-CNN(Fast R-CNN)、更快 R-CNN(Faster R-CNN)通过区域提议网络(RPN)生成候选区域,并对这些区域进行分类和回归调整。
    • YOLO(You Only Look Once):YOLO 是一种端到端的目标检测方法,将检测任务转换为回归问题,可以在一次前向传播中完成目标检测,速度快,适合实时检测。
    • SSD(Single Shot MultiBox Detector):类似于 YOLO 的方法,但在不同尺度的特征图上进行检测,以提高对不同大小目标的检测效果。

3. 应用场景

  • 自动驾驶:检测道路上的车辆、行人、交通标志等,以辅助自动驾驶决策。
  • 安防监控:在监控视频中检测和识别可疑人物或行为,提高安全性。
  • 医疗影像分析:在医学图像中检测异常区域,如肿瘤、病灶等。
  • 智能零售:在商店中自动检测和识别商品,实现自动结账等功能。

4. 挑战

  • 多尺度目标检测:目标的大小变化较大时,检测算法需要具备在不同尺度下均能准确检测目标的能力。
  • 遮挡和重叠:当多个目标相互遮挡或重叠时,检测算法需要能够区分并正确检测每个目标。
  • 实时性要求:对于实时应用,如自动驾驶或视频监控,目标检测算法需要在保证精度的同时具备高效的处理速度。

5. 评价指标

  • 准确率(Precision)和召回率(Recall):用于衡量检测的准确性和全面性。
  • 平均精度均值(mAP, mean Average Precision):在不同的置信度阈值下,计算每个类别的平均精度,再取平均值,用于衡量模型的整体检测性能。
  • IoU(Intersection over Union):用于衡量预测的边界框与真实边界框之间的重叠度,IoU 越高,检测越准确。

5 特征编码

在图像算法中,特征编码是指将从图像中提取的特征转换为适合进一步处理、分析或存储的格式或表示。它在许多计算机视觉和图像处理任务中具有重要意义,主要作用包括:

  1. 特征表示

    • 特征编码的主要作用是将图像的高维数据(如像素值)转化为低维的、结构化的特征表示。这个表示能够更好地捕捉图像中有意义的信息,例如边缘、纹理、形状或颜色分布等。
  2. 数据压缩

    • 编码后的特征通常比原始图像数据更加紧凑,这使得存储和传输变得更加高效。此外,压缩后的数据更容易用于机器学习模型的训练。
  3. 模式识别和分类

    • 通过特征编码,复杂的图像数据可以转换为模型更容易理解的输入。例如,在人脸识别中,编码后的特征可以帮助识别不同个体之间的差异。
  4. 匹配和检索

    • 在图像检索系统中,特征编码后的图像表示能够用于快速匹配和检索相似的图像。这种匹配通常基于特征向量之间的相似度度量。
  5. 鲁棒性增强

    • 特征编码可以帮助增强算法对各种变化的鲁棒性,例如光照变化、视角变化和噪声等。例如,SIFT(尺度不变特征变换)和SURF(加速鲁棒特征)就是通过特征编码实现了对图像缩放、旋转等变换的鲁棒性。

特征编码的例子:

  • HOG(Histogram of Oriented Gradients):通过编码图像的梯度方向信息,常用于行人检测。
  • ORB(Oriented FAST and Rotated BRIEF):一种用于特征点检测和描述的算法,能够生成旋转不变的二进制特征编码。
  • 深度学习中的特征编码:卷积神经网络(CNN)通过一系列卷积层和池化层自动学习图像的特征编码。

特征编码是将图像的原始信息转换为更为结构化且易于处理的格式的关键步骤,它在图像分析、识别、分类和检索中起到了基础性的作用。

在这里插入图片描述

6 神经网络的输入和输出

神经网络的输入是任务相关的数据,输出是经过网络处理后的结果,这两者直接影响网络的设计和功能。输入的数据格式和维度需要与网络的结构相匹配,而输出则反映了网络解决问题的目标。

在神经网络中,输入输出是两个关键的概念,它们代表着网络在处理任务时所接收的数据和生成的结果。具体来说:

1. 输入(Input):

  • 定义:输入是提供给神经网络的数据,通常是以向量或矩阵的形式给出,这些数据可以是图像、文本、声音、数值等,取决于具体任务的类型。
  • 形状:输入数据的形状(即维度)取决于具体的任务。例如:
    • 对于图像分类任务,输入通常是一个多维数组,代表图像的像素值,形状可能为 (width, height, channels),如 (28, 28, 1) 表示一张 28x28 的灰度图像。
    • 对于自然语言处理任务,输入可能是一个词或句子的词向量表示,形状可能为 (sequence_length, embedding_dim)
  • 作用:输入数据通过网络的各层进行处理(例如卷积层、全连接层等),以提取特征或进行预测。

2. 输出(Output):

  • 定义:输出是神经网络在接收到输入并经过处理后生成的结果。输出的形式和输入相关,并且是与任务直接相关的。
  • 类型
    • 分类任务:输出通常是一个概率分布或一个类别标签。例如,在二分类任务中,输出可能是一个标量,表示属于某一类的概率;在多分类任务中,输出可能是一个向量,表示每一类的概率。
    • 回归任务:输出通常是一个或多个连续的数值。例如,在房价预测中,输出可能是一个标量,表示预测的房价。
    • 生成任务:在图像生成或自然语言生成等任务中,输出可能是与输入相关的图像、文本或其他形式的数据。
  • 形状:输出数据的形状与具体任务相关,例如:
    • 对于分类任务,输出可能是一个长度为类别数的向量,每个元素代表该类别的概率。
    • 对于回归任务,输出可能是一个标量或一个向量,表示预测的连续值。

示例

  • 图像分类任务

    • 输入:一个大小为 (32, 32, 3) 的图像,其中 32x32 表示图像的分辨率,3 表示 RGB 三个通道。
    • 输出:一个长度为 10 的向量,表示图像属于 10 个类别中的每一个的概率。
  • 文本分类任务

    • 输入:一个长度为 100 的序列,表示文本的词向量。
    • 输出:一个标量,表示文本属于某个类别的概率。
  • 回归任务(例如房价预测)

    • 输入:多个特征的数值向量,如面积、房间数量、位置等。
    • 输出:一个标量,表示预测的房价。

7.深度学习端到端的概念

在这里插入图片描述

端到端(End-to-End) 的概念在深度学习中指的是一种方法论,整个学习过程从输入到输出都由一个统一的模型直接学习完成,中间没有人工设计的特征提取或处理步骤。换句话说,端到端模型通过直接从原始输入数据学习到最终的输出结果,而无需人为干预中间步骤。

1. 端到端深度学习的关键点

  1. 自动化特征学习

    • 在传统机器学习中,特征提取通常由专家手动完成,而在端到端深度学习中,这一过程是自动完成的。模型通过多层神经网络直接从原始数据中提取特征。例如,卷积神经网络(CNN)可以自动从图像数据中提取边缘、纹理等低级和高级特征。
  2. 整体优化

    • 端到端学习使得整个系统可以通过统一的损失函数进行整体优化。这个损失函数直接衡量输入和输出之间的差异。通过反向传播算法,模型的所有参数都在同一目标下进行优化。
  3. 简化工作流程

    • 端到端方法减少了数据处理和特征工程的复杂性,使得模型开发更加简便。研究人员或工程师不再需要设计特定的特征提取算法,只需提供原始数据和目标输出,模型就可以自主学习相关的特征。
  4. 一体化模型架构

    • 端到端深度学习通常使用一体化的模型架构,如卷积神经网络(CNN)、循环神经网络(RNN)或转换器(Transformer),来处理各种任务。这些模型从原始数据输入直接生成输出结果。

2. 端到端学习的例子

  1. 图像分类

    • 传统方法:先手动设计特征提取器(如HOG、SIFT),然后将提取的特征输入分类器(如SVM)进行分类。
    • 端到端方法:使用卷积神经网络(CNN)直接输入原始图像像素,网络自动学习特征并输出类别标签。
  2. 语音识别

    • 传统方法:分为多个步骤,如信号处理、特征提取(如MFCC)、声学模型训练等。
    • 端到端方法:输入原始音频波形,使用深度神经网络直接输出文本或字符序列。
  3. 机器翻译

    • 传统方法:包含分词、句法分析、翻译模型等多个阶段。
    • 端到端方法:使用神经机器翻译模型(如Transformer),直接从源语言文本生成目标语言文本。

3. 优势与挑战

  • 优势

    • 减少人工干预,简化模型开发流程。
    • 能够从海量数据中学习更有效的特征,通常表现优于传统方法。
    • 可以统一处理复杂的多阶段任务,整体性能优化更好。
  • 挑战

    • 对大数据和高计算能力要求更高。
    • 模型的可解释性较差,难以理解中间层的特征和决策过程。
    • 需要大量的标注数据进行训练。

参考

https://www.bilibili.com/cheese/play/ss10426?query_from=0&search_id=5162458312674377813&search_query=周见智&csource=common_hpsearch_null_null&spm_id_from=333.337.search-card.all.click

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

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

相关文章

【WiFi主要技术学习2】

WiFi协议学习2 WiFi SPEC理解频段信道带宽协商速率安全与加密WiFi主要技术理解BP直接序列扩频(Direct Sequence Spread Spectrum,DSSS)BPSKQPSK正交幅度调制(Quadrature Amplitude Modulation,QAM)互补码键控(Complementary Code Keying,CCK)正交频分复用(Orthogonal…

基于mallat小波变换的图像分解和重建算法matlab仿真,对比不同分解层数图像重建质量

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 (完整程序运行后无水印) 2.算法运行软件版本 matlab2022a 3.部分核心程序 (完整版代码包含详细中文注释和操作步骤视频&#xff09…

axios取消请求CancelToken的原理解析及用法示例

文章目录 一、axios的实例与请求流程二、CancelToken 的作用三、CancelToken 的实现原理四、取消请求的流程五、CancelToken用法六、利用拦截器取消请求1、axios请求拦截器2、axios响应拦截器3、利用路由导航守卫取消请求 一、axios的实例与请求流程 下图是axios实例属性的简图…

Java技术栈 —— Spark入门(三)之实时视频流

Java技术栈 —— Spark入门(三)之实时视频流转灰度图像 一、将摄像头数据发送至kafka二、Kafka准备topic三、spark读取kafka图像数据并处理四、本地显示灰度图像(存在卡顿现象,待优化) 项目整体结构图如下 参考文章或视频链接[1] Architectur…

破解“目录名称无效”难题:数据恢复实战指南

在数字化生活日益普及的今天,数据存储与管理成为了我们日常不可或缺的一部分。然而,当您尝试访问某个文件夹时,却遇到了“目录名称无效”的错误提示,这无疑会让人感到焦虑和困惑。本文将深入探讨“目录名称无效”这一问题的根源&a…

Excel中使用VBS自定义函数将中文转为拼音首字母

1、在“开发工具”中&#xff0c;点击“Visual Basic”。如果没有“开发工具”&#xff0c;则添加。 2、添加“模块”&#xff0c;在窗口中添加自定义函数。 Function MyGetPYChar(char) MyCodeNumber 65536 Asc(char) If (MyCodeNumber > 45217 And MyCodeNumber <…

2d椭圆拟合学习

算法来自论文《 Direct Least Square Fitting of Ellipses》 《NUMERICALLY STABLE DIRECT LEAST SQUARES FITTING OF ELLIPSES》 相关文章 论文阅读&#xff1a;直接拟合椭圆 Direct Least Square Fitting of Ellipseshttps://zhuanlan.zhihu.com/p/645391510Fitting Elli…

线段树离散化、二分搜索、特别修改

699. 掉落的方块 - 力扣&#xff08;LeetCode&#xff09; 1.如果直接按照原落点的值构造线段树&#xff0c;空间开辟会过大&#xff0c;所以收集所有出现过的点进行离散化 2.方块a落在1--3点&#xff0c;b落在3--4点&#xff0c;如果直接按照落点修改&#xff0c;查询3时位置…

基于Docker搭建Graylog分布式日志采集系统

文章目录 一、简介二、Graylog1、主要特点2、组件3、工作流程介绍4、使用场景 三、Graylog 安装部署1、 安装 docker2、安装docker compose3、 安装graylog4、Graylog控制台 四、springboot集成Graylog 一、简介 Graylog是一个开源的日志管理工具&#xff0c;主要功能包括日志…

go 切片slice学习总结

切片的结构 切片的底层结构&#xff1a; type SliceHeader struct {Data uintptr // 指向底层数组的指针 Len int //长度Cap int //空间容量 } 切片的初始化 1 通过数组或者已有的slice创建新的slice 1.1 使用数组创建切片 通过数组的一部分来初始化切片。 …

数据结构-c/c++实现栈(详解,栈容量可以动态增长)

一.栈的基本介绍 栈是一种只能够在一端进行插入和删除的顺序表。如下图 空栈&#xff1a;表示不含任何元素的栈 栈顶&#xff1a;表示允许进行插入和删除元素的一端 栈底&#xff1a;表示不允许进行插入和删除元素的一端 即栈是一种后进先出的线性表数据结构 二.栈的常见操…

为什么我的手机卡需要快递员给激活?这到底安全吗?

网友咨询&#xff1a;网上申请了一张新卡&#xff0c;本来想着自己激活&#xff0c;没想到快递员先打电话过来说&#xff0c;要身份证给帮助激活&#xff0c;所以我想问一下&#xff0c;网上申请的卡是不是都是快递给激活呢&#xff1f;安不安全呢&#xff1f; 首先要说一下&a…

第4章-08-用Python Requests库模拟浏览器访问接口

🏆作者简介,黑夜开发者,CSDN领军人物,全栈领域优质创作者✌,CSDN博客专家,阿里云社区专家博主,2023年CSDN全站百大博主。 🏆数年电商行业从业经验,历任核心研发工程师,项目技术负责人。 🏆本文已收录于专栏:Web爬虫入门与实战精讲,后续完整更新内容如下。 文章…

CSRF漏洞的预防

目录 CSRF漏洞预防措施 深入研究 CSRF Token的工作原理是什么&#xff1f; 为什么仅依靠Referer头字段来防范CSRF攻击不是完全可靠&#xff1f; SameSite cookie属性如何防止CSRF攻击&#xff1f; SameSite Cookie属性的作用 如何通过SameSite属性防止CSRF攻击 导图 CS…

Eclipse 自定义字体大小

常用编程软件自定义字体大全首页 文章目录 前言具体操作1. 打开设置对话框2. 打开字体设置页面3. 找到Text Font&#xff0c;点击修改4. 修改字体 前言 Eclipse 自定义字体大小&#xff0c;统一设置为 Courier New &#xff0c;大小为 三号 具体操作 【Windows】>【Perfer…

Qt第二课----信号和槽

作者前言 &#x1f382; ✨✨✨✨✨✨&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f382; ​&#x1f382; 作者介绍&#xff1a; &#x1f382;&#x1f382; &#x1f382; &#x1f389;&#x1f389;&#x1f389…

C#笔记4 详细解释事件及其原型、匿名方法和委托的关系

匿名方法 定义 匿名方法允许一个与委托关联的代码被内联的写入使用委托的位置。 语法形式 delegate(参数列表) {代码块 } 前文说过&#xff0c;委托是定义了一个公司&#xff0c;公司专门承接某一类型的任务。 委托的实例化就是公司把任务交给了具体的职员&#xff08;方…

掌握测试的艺术:深入探索Python的pytest库

文章目录 **掌握测试的艺术&#xff1a;深入探索Python的pytest库**背景&#xff1a;为什么选择pytest&#xff1f;pytest是什么&#xff1f;如何安装pytest&#xff1f;5个简单的库函数使用方法1. pytest.main()2. pytest.skip()3. pytest.mark.parametrize()4. pytest.raises…

基于物联网的低成本便携式传感器节点用于火灾和空气污染的检测与报警

目录 摘要 引言 材料和方法 传感器节点 IoT 微控制器 颗粒物传感器 环境和气体传感器 MQTT代理 Node-Red监控平台 系统结构 数据存储 工作描述 实验结果 讨论 结论 致谢 参考文献 这篇论文的标题是《Low-cost IoT-based Portable Sensor Node for Fire and Air…

STM32G474之TIM1捕获1模式

STM32G474采用TIM8产生方波信号&#xff0c;使用TIM1工作于捕获1模式&#xff0c;并计算方波频率。捕获方波周期&#xff0c;在有些开发中&#xff0c;还是能用到。建议开发时使用HAL库自带的库函数。使用寄存器方法也可以实现&#xff0c;但是后期修改不太方便。 测试时&…