单片机结合OpenCV

embedded/2024/11/26 22:08:19/

目录

一、引言

二、单片机结合 OpenCV 的优势

1. 图像识别与处理

2. 目标检测

3. 用户界面开发

4. Linux 在嵌入式系统中的作用

5. 多线程优势

6. 网络编程作用

7. 文件编程功能

三、OpenCV 在单片机上的实现难点

1. 处理能力限制

2. 通信与优化挑战

四、单片机如何与 OpenCV 协同工作

1. 串口通信方式

2. 直接安装方式

五、单片机结合 OpenCV 的应用案例

1. 水果分类解决方案

2. 目标跟踪系统

3. PC 与单片机通信

六、单片机与 OpenCV 结合的开发流程

1. 环境搭建

2. 图像采集模块

3. 图像处理模块

4. 分类模块

5. 用户交互模块


一、引言

在当今科技飞速发展的时代,计算机视觉技术在各个领域的应用越来越广泛。OpenCV作为一款强大的计算机视觉开源库,能够实现对图像和视频的处理、分析与识别等功能。而单片机作为一种集成度极高的微型电脑,广泛应用于嵌入式系统和物联网领域。将单片机与 OpenCV 结合起来,具有重要的背景和意义。

一方面,在某些特定的应用场景中,需要同时具备图像采集、处理和控制的能力。OpenCV 可以提供强大的图像处理算法,而单片机则可以实现对硬件设备的控制,两者结合可以满足这些复杂的需求。另一方面,随着嵌入式系统的不断发展,对图像处理和控制的要求也越来越高。将 OpenCV 与单片机结合,可以充分发挥两者的优势,提高系统的性能和稳定性。

总之,单片机与 OpenCV 的结合为计算机视觉在嵌入式系统中的应用提供了新的思路和方法,具有广阔的发展前景。

二、单片机结合 OpenCV 的优势

1. 图像识别与处理

在具有图像采集功能的高端单片机系统中,OpenCV 可进行简单的图像预处理,如边缘检测、滤波等,提高图像质量或提取特定特征。例如,可参考“opencv库对图像预处理的简单介绍_opencv图像预处理-CSDN博客”中提到的 OpenCV 库中常用的图像预处理方法,包括图像读取、色彩空间转换、图像缩放、图像翻转、图像裁剪、图像旋转、图像平移和图像增强等。这些预处理操作可以为后续的图像识别和处理提供更好的基础。

2. 目标检测

可检测特定的目标物体,在工业自动化等领域有广泛应用。如“单片机毕设分享 stm32单片机的目标检测与跟踪系统 -物联网”中,通过 OpenMV 作为识别模块去识别被测物体(以红色小球为例),判断小球中心点所在区域信息,并将其区域标志位通过串口发送给 STM32,实现物体追踪功能。同时,“如何使用 OpenCV 进行目标检测和跟踪?-CSDN 博客”和“如何在 OpenCV 中实现目标检测算法?_opencv 目标检测-CSDN 博客”也介绍了使用 OpenCV 进行目标检测和跟踪的方法,可以为单片机结合 OpenCV 的目标检测应用提供参考。

3. 用户界面开发

利用 QT 为具有显示屏的嵌入式设备开发直观、友好的用户界面。如“一文读懂:QT 在嵌入式开发中的作用及常见的开发方式-手机搜狐网”中提到,Qt 在嵌入式开发中具有跨平台支持、丰富的控件和功能、高效的开发、适用于资源受限的环境、提升代码质量、简化硬件平台的适配以及强大的集成开发环境(IDE)等作用。同时,“qt 编程能够干什么 • Worktile 社区-Worktile”和“QT 在嵌入式开发中的广泛应用_学到牛牛-手机搜狐网”也详细介绍了 QT 在嵌入式开发中的各种用途和优势,包括创建跨平台的 GUI 应用程序、系统工具与应用程序开发、嵌入式设备的软件开发以及 2D 和 3D 图形渲染等。

4. Linux 在嵌入式系统中的作用

提供丰富的驱动支持、多任务处理、网络功能和丰富的软件生态。如“Linux 文件系统在嵌入式系统中的应用-CSDN 博客”介绍了嵌入式 Linux 文件系统的概述和常见的 ext4 文件系统的创建和挂载示例。“Linux 在嵌入式系统开发领域的广泛应用-linux 运维-PHP 中文网”和“Linux 在工业与嵌入式的应用-手机网易网”也提到了 Linux 在嵌入式系统中的广泛应用,包括在工业控制领域的应用以及其在保持优势的同时进行实时性优化以满足工业控制领域高实时性要求的发展方向。

5. 多线程优势

提高系统响应性,优化资源利用。在嵌入式系统中,可能需要同时处理多个任务,如数据采集、通信、用户界面更新等。通过多线程,可以让不同的任务在不同的线程中并行执行,避免某个任务阻塞整个系统,提高系统的响应速度。同时,可以充分利用单片机的多核处理器或在单核处理器上分时复用,提高处理器的利用率。

6. 网络编程作用

实现远程监控与控制、数据传输和设备互联。如“单片机毕设分享 stm32 单片机的目标检测与跟踪系统 -物联网”中,通过串口通信将 OpenMV 识别到的物体位置信息发送给 STM32,实现物体追踪功能,这体现了数据传输的作用。同时,“Linux 在工业与嵌入式的应用-手机网易网”中提到工业以太网在工业控制领域的应用,利用其高速、易于控制等优点实现设备的联网和远程监控。

7. 文件编程功能

用于数据存储、配置管理和固件升级。如“Linux 文件系统在嵌入式系统中的应用-CSDN 博客”中提到,嵌入式 Linux 文件系统为嵌入式系统提供了数据存储和访问的功能,使得用户可以方便地进行文件的读写、查找、删除等操作。同时,文件编程还可以用于存储设备的配置参数,方便用户进行配置和修改,以及将新的固件程序存储在文件中,通过特定的升级程序读取文件中的固件数据,对设备进行固件升级。

三、OpenCV 在单片机上的实现难点

1. 处理能力限制

单片机资源有限,内存小、计算能力较弱,不适合运行复杂的 OpenCV 算法。例如,OpenCV 的设计目标主要是 PC 和嵌入式系统中的高性能图像处理,而像 51 单片机这类资源受限的设备,常常用于控制简单设备或物联网项目,适合低功耗、低成本的应用。如果要在 51 单片机上利用 OpenCV 的功能,通常是通过 USB 转串口通信,将处理后的图像数据传输到连接的电脑,然后由电脑上的程序(如 Python 脚本)使用 OpenCV 做后续处理。

2. 通信与优化挑战

需要对图像处理算法和数据传输协议进行深入研究,充分考虑 OpenCV 的图像处理流程和单片机的处理能力,选择合适的图像采集方式和数据传输协议,并进行多方面的测试和优化。

实现 OpenCV 与单片机通信的主要方式有两种。一种是将单片机连接到计算机上,利用串口或 USB 接口进行数据传输和控制。在这种方式下,OpenCV 负责采集图像数据,通过计算机将处理结果传递给单片机进行控制。另一种方式是将 OpenCV 直接安装在单片机嵌入式系统中,利用相机模块采集图像信息,在嵌入式系统内完成图像处理和控制。这种方式需要对嵌入式系统的处理性能和硬件环境进行充分优化,才能保证图像处理的稳定性和实时性。

无论采用哪种方式,实现 OpenCV 与单片机通信都需要对图像处理算法和数据传输协议进行深入研究。例如,可以参考“opencv单片机通信 - CSDN 文库”中的内容,需要充分考虑 OpenCV 的图像处理流程和单片机的处理能力,选择合适的图像采集方式和数据传输协议。同时,还需要进行多方面的测试和优化,以保证通信的可靠性和实时性。

在实际应用中,可以使用 OpenMV 作为识别模块去识别被测物体,并将其区域标志位通过串口发送给单片机,实现物体追踪功能。如“OpenMV 图像处理之后给单片机通讯_msp430 与 openmv 云台 - CSDN 博客”中介绍的,通过 OpenMV 的单颜色识别讲解,将识别到的颜色分别发送给单片机,实现物体追踪功能。

此外,还可以通过定义结构体和指针的方式,先定义一个结构体,包含要发送的数据类型,然后填入实际数据,获取指向这个结构体实例的指针,读出指针指向的内存里的数据,直接就是一堆 int8,接收方收到之后先用同样的结构体定义开辟一块内存,然后直接把收到的数据写入这块内存,就能从结构体里面直接读出各个变量的值了,这样一次可以发好多,而且简单。如“【openmv 等】与单片机的通信(总结)_openmv 向单片机发送二进制数据”中提到的方法。

总之,实现 OpenCV 与单片机的通信是一项复杂而关键的任务,需要充分理解图像处理和嵌入式系统的原理和技术,同时需要不断优化算法和协议,以应对不同的应用场景和要求。

四、单片机如何与 OpenCV 协同工作

1. 串口通信方式

单片机连接到计算机上,利用串口或 USB 接口进行数据传输和控制是一种常见的单片机与 OpenCV 协同工作的方式。在这种方式下,OpenCV 负责采集图像数据,通过计算机将处理结果传递给单片机进行控制。

例如,可以参考“opencv单片机通信 - CSDN 文库”中的内容,OpenCV 是一款广泛应用于计算机视觉领域的开源库,能够实现对图像和视频的处理、分析与识别等功能。而单片机作为集成度极高的微型电脑,广泛应用于嵌入式系统和物联网领域。通过将单片机连接到计算机,利用串口通信,OpenCV 采集图像数据后,计算机可以将处理结果传递给单片机,实现对硬件设备的控制。

在实际应用中,可以使用 OpenMV 作为识别模块去识别被测物体,并将其区域标志位通过串口发送给单片机,实现物体追踪功能。如“OpenMV 图像处理之后给单片机通讯_msp430 与 openmv 云台 - CSDN 博客”中介绍的,通过 OpenMV 的单颜色识别讲解,将识别到的颜色分别发送给单片机,实现物体追踪功能。

此外,还可以通过定义结构体和指针的方式,先定义一个结构体,包含要发送的数据类型,然后填入实际数据,获取指向这个结构体实例的指针,读出指针指向的内存里的数据,直接就是一堆 int8,接收方收到之后先用同样的结构体定义开辟一块内存,然后直接把收到的数据写入这块内存,就能从结构体里面直接读出各个变量的值了,这样一次可以发好多,而且简单。如“【openmv 等】与单片机的通信(总结)_openmv 向单片机发送二进制数据”中提到的方法。

2. 直接安装方式

将 OpenCV 直接安装在单片机嵌入式系统中,利用相机模块采集图像信息,在嵌入式系统内完成图像处理和控制也是一种可行的方式。

这种方式需要对嵌入式系统的处理性能和硬件环境进行充分优化,才能保证图像处理的稳定性和实时性。例如,可以参考“图像处理与增强在单片机中的应用_opencv 能不能用在单片机-CSDN 博客”中的内容,为了在单片机中进行图像处理与增强,需要准备一些硬件设备,如单片机开发板(如 Arduino、Raspberry Pi 等)、摄像头模块等,并安装 OpenCV 库。

在安装 OpenCV 库时,可以按照以下步骤进行:打开终端或命令提示符,进入单片机的操作系统。下载 OpenCV 库的源代码,并解压到指定目录。进入解压后的目录,执行编译和安装命令,如“ mkdir build cmake.. sudo make install”。

安装完成后,可以在单片机的操作系统中使用 OpenCV 库进行图像处理与增强。在进行图像处理时,可以使用各种 OpenCV 提供的函数,如模糊处理函数 blur、高斯模糊函数 GaussianBlur、中值滤波函数 medianBlur 等。例如,“嵌入式人工智能应用-第三章 opencv 操作 3 图像平滑操作-CSDN 博客”中详细介绍了这些函数的使用方法和参数含义。

总之,无论是串口通信方式还是直接安装方式,都需要充分考虑 OpenCV 的图像处理流程和单片机的处理能力,选择合适的图像采集方式和数据传输协议,并进行多方面的测试和优化,以保证单片机与 OpenCV 能够协同工作,满足不同应用场景的需求。

五、单片机结合 OpenCV 的应用案例

1. 水果分类解决方案

利用 STM32F4 单片机结合 OpenCV 实现水果分类,通过决策树算法对不同种类的水果进行识别和分类具有广泛的应用前景。该项目旨在为智能农业、自动售货机及教育领域等场景提供高效的水果分类解决方案。

一、项目概述

  • 项目目标和用途:本项目利用 STM32F4 单片机结合 OpenCV 的决策树算法实现水果分类。可以帮助用户快速识别水果种类,提高生产效率和用户体验。广泛应用于智能农业中,可实现水果的自动化分拣;在自动售货机中,能准确识别顾客选购的水果;在教育领域,可作为教学工具,让学生直观地了解计算机视觉技术在实际中的应用。
  • 技术栈关键词:硬件方面包括 STM32F4、OV7670 摄像头、OLED 显示屏;软件上有 STM32CubeIDE、OpenCV、Python、Scikit-learn;通信协议采用 I2C、UART;算法为决策树分类算法。

二、系统架构

  • 系统架构设计:本系统采用模块化设计,包括图像采集模块、图像处理模块、决策树分类模块和用户交互模块。
    • 图像采集模块:通过摄像头实时获取水果图像。采用 OV7670 摄像头,通过 I2C 接口与 STM32F4 单片机进行通信,负责采集水果的原始图像数据。
    • 图像处理模块:使用 OpenCV 对获取的图像进行预处理和特征提取。预处理包括去噪、灰度化等操作,特征提取为后续的分类提供关键信息。
    • 决策树分类模块:对提取的特征进行分类并返回结果。利用 Scikit-learn 库训练决策树模型,根据图像处理模块提取的特征对水果进行分类。
    • 用户交互模块:通过 OLED 显示屏显示分类结果,并通过按键触发拍照。用户可以直观地看到水果的分类结果,并且可以通过按键控制图像采集的时机。
  • 选择的单片机和通信协议单片机选用 STM32F407,因其具备强大的处理能力和丰富的外设接口,能够满足系统的需求。通信协议方面,使用 I2C 与 OLED 显示屏进行通信,确保显示的稳定和快速;使用 UART 与计算机进行调试,方便开发过程中的数据传输和监控。

三、环境搭建和注意事项

  • 环境搭建
    • 硬件准备:STM32F4 开发板、OV7670 摄像头、OLED 显示屏(I2C 接口)、按键模块、面包板和跳线。这些硬件设备共同构成了水果分类系统的基础。
    • 软件安装:安装 STM32CubeIDE,用于开发 STM32F4 程序;安装 Python 和 OpenCV,进行模型训练;安装 Scikit-learn 库,用于决策树模型的训练。通过这些软件的安装,为系统的开发和运行提供了必要的工具。
    • 模型训练:收集水果图像数据集,并使用 Python 进行数据预处理和模型训练。在训练过程中,需要对数据集进行清洗、标注等操作,以提高模型的准确性。
  • 注意事项:确保硬件连接正确,避免短路。摄像头与单片机之间的信号匹配需要注意电平转换,以保证数据传输的稳定和准确。在 STM32F4 中使用 OpenCV 时,需要将库的相关文件正确配置,确保 OpenCV 能够在单片机上正常运行。

四、代码实现过程

  • 图像采集模块
    • 功能描述:图像采集模块负责通过 OV7670 摄像头实时获取水果图像,并将图像数据传递给后续的图像处理模块。
    • 代码实现
 

#include"stm32f4xx_hal.h"

#include"ov7670.h"

#define IMAGE_WIDTH 320

#define IMAGE_HEIGHT 240

void capture_image(uint8_t* image_buffer){

// 初始化摄像头

if(OV7670_Init()!= HAL_OK){

printf("Camera initialization failed!\n");

return;

}

// 开始图像采集

OV7670_Start();

// 读取图像数据到缓冲区

if(OV7670_Read_Image(image_buffer, IMAGE_WIDTH, IMAGE_HEIGHT)!= HAL_OK){

printf("Image capture failed!\n");

}

// 停止摄像头

OV7670_Stop();

}

  • 代码说明:引入 STM32 的硬件抽象层库stm32f4xx_hal.h,便于控制硬件。引入 OV7670 摄像头的驱动库ov7670.h。定义图像的宽度和高度IMAGE_WIDTH和IMAGE_HEIGHT。capture_image(uint8_t* image_buffer)函数用于捕获图像,将捕获到的图像数据存放在image_buffer中。首先调用OV7670_Init()初始化摄像头,若失败则输出错误信息。然后调用OV7670_Start()开始图像采集,使用OV7670_Read_Image()读取图像数据到指定缓冲区,最后调用OV7670_Stop()停止摄像头工作。
  • 时序图:[此处可根据实际情况绘制或描述图像采集模块的时序图]
  • 图像处理模块
    • 功能描述:图像处理模块的主要功能是对采集到的图像进行预处理(如去噪和特征提取)。使用 OpenCV 库实现图像的灰度化和颜色直方图的提取。
    • 代码实现
 

import cv2

import numpy as np

def process_image(image):

# 将图像转换为灰度图

gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

# 应用高斯模糊以去噪

blurred_image = cv2.GaussianBlur(gray_image,(5,5),0)

# 提取颜色直方图特征

hist_size = 256

hist_range = (0,256)

hist = cv2.calcHist([blurred_image],[0],None,[hist_size], hist_range)

# 归一化直方图

hist = cv2.normalize(hist, hist).flatten()

return hist

  • 代码说明:导入 OpenCV 库cv2,便于进行图像处理操作。导入 NumPy 库numpy as np,用于处理数组和矩阵。process_image(image)函数接收输入图像并对其进行处理。首先将图像转换为灰度图,然后应用高斯模糊去噪,接着提取颜色直方图特征并进行归一化处理。
  • 决策树分类模块:[此处可详细描述决策树分类模块的代码实现、功能和说明]
  • 用户交互模块:[此处可详细描述用户交互模块的代码实现、功能和说明]

2. 目标跟踪系统

基于 stm32 与 openmv 的目标跟踪系统,OpenMV 识别被测物体,通过串口将信息传给 STM32,STM32 控制舵机旋转相应角度,使 OpenMV 摄像头对准被测物体。

该系统主要分为 OpenMV 识别部分和 STM32 控制部分。通过 OpenMV 对被测物体进行捕捉,如识别红色小球。OpenMV 编程时,先对红色的色域进行调整,识别到红色后,判断红色区域最大的部分,过滤掉背景中可能存在的小部分红色区域的干扰。识别到红色小球后,用矩形框将其框住,并显示矩形框的中心位置,判断中心位置所在区域,并将区域的标志信息通过串口传递给 STM32。STM32 接收到数据后,进行相应动作,通过定时器输出合适的 PWM 波,控制舵机旋转相应的角度,使 OpenMV 摄像头对准被测物体,以实现物体追踪功能。

硬件设计:硬件连接部分使用杜邦线连接。3S 锂电池接稳压板输入端以及直接给 LED 补光板供电,稳压板输出端接 OpenMV 的 VIN 和 GND 引脚、STM32 的 5V 和 GND 引脚以及两个舵机的正(红色)负(棕色)极。OpenMV 的 P4 引脚(串口 3 的 TX)接 STM32 的 PA10 引脚(串口 1 的 RX),OpenMV 的 P5 引脚(串口 3 的 RX)接 STM32 的 PA9 引脚(串口 1 的 TX),STM32 的 PC7 引脚(定时器 3 通道 2)接 x 轴的舵机的信号线(橙黄色),STM32 的 PC7 引脚(定时器 3 通道 1)接 y 轴的舵机的信号线(橙黄色)。

软件设计

  • OpenMV 部分:主要实现功能包括完成被测物体的识别、寻找最大色块区域、判断被测物体所在区域、通过串口发送被测物体的位置信息。
    • 对被测物体的识别:本设计中被测物体为一个红色小球,对于物体的识别主要为颜色识别。在编程中首先需要对 OpenMV 的红色的阈值进行调整,告诉 OpenMV“什么是红色”。
 

import sensor, image, time, pyb

sensor.reset() # 初始化摄像头传感器.

sensor.set_pixformat(sensor.RGB565) # 使用 RGB565.

sensor.set_framesize(sensor.QVGA) # 分辨率:320*240

sensor.skip_frames(10) # 让新设置生效.

sensor.set_auto_whitebal(False) # 关闭自动白平衡.

clock = time.clock() # Tracks FPS.

red_threshold = (14, 68, 11, 70, 9, 56) #红色阈值设定

while(True):

img = sensor.snapshot() # 拍照并返回图像.

blobs = img.find_blobs([red_threshold])

img.draw_rectangle(blobs)

img.draw_cross(blobs.cx(), blobs.cy())

  • STM32 部分:主要实现功能包括使用串口接收 OpenMV 发来的数据、通过定时器输出 PWM 波、以及实现控制舵机旋转追踪的目的。

3. PC 与单片机通信

基于 opencv4 和 Yolo-Fastest,实现 PC 和单片机通信,控制步进电机捕获目标。

[此处可进一步详细描述基于 opencv4 和 Yolo-Fastest 实现 PC 和单片机通信的过程、原理和代码实现等内容]

六、单片机与 OpenCV 结合的开发流程

1. 环境搭建

在将单片机与 OpenCV 结合进行开发时,需要进行环境搭建,包括硬件准备和软件安装,同时在模型训练时也有一些注意事项。

  • 硬件准备:首先需要准备相应的硬件设备,如单片机开发板、摄像头模块等。对于一些特定的项目,可能还需要显示屏、按键模块等其他外设。例如在水果分类解决方案中,硬件准备包括 STM32F4 开发板、OV7670 摄像头、OLED 显示屏(I2C 接口)、按键模块、面包板和跳线等。
  • 软件安装:安装合适的软件工具对于开发至关重要。一般来说,需要安装单片机开发环境,如 STM32CubeIDE,用于开发单片机程序。同时,还需要安装 Python 和 OpenCV,进行模型训练。此外,根据项目需求,可能还需要安装其他库,如 Scikit-learn 库,用于决策树模型的训练。
  • 模型训练注意事项:在进行模型训练时,需要注意数据的质量和数量。收集的数据集应具有代表性,能够涵盖各种可能的情况。同时,需要对数据集进行清洗和标注,以提高模型的准确性。在 STM32F4 与 OpenCV 结合的水果分类项目中,需要收集水果图像数据集,并使用 Python 进行数据预处理和模型训练。在训练过程中,要确保硬件连接正确,避免短路。摄像头与单片机之间的信号匹配需要注意电平转换,以保证数据传输的稳定和准确。在 STM32F4 中使用 OpenCV 时,需要将库的相关文件正确配置,确保 OpenCV 能够在单片机上正常运行。

2. 图像采集模块

图像采集模块负责通过摄像头实时获取图像数据,并传递给后续模块。不同的项目可能会使用不同的摄像头模块和通信协议。例如,在水果分类解决方案中,图像采集模块采用 OV7670 摄像头,通过 I2C 接口与 STM32F4 单片机进行通信,负责采集水果的原始图像数据。在基于 STM32 的车牌识别控制系统设计中,选用具有高分辨率、高帧率特点的摄像头模块,如 OV7670 等,摄像头模块负责实时采集车牌图像,并将图像数据传输给 STM32 单片机

3. 图像处理模块

图像处理模块对采集到的图像进行预处理和特征提取。预处理包括去噪、灰度化等操作,特征提取为后续的分类提供关键信息。在水果分类解决方案中,图像处理模块使用 OpenCV 对获取的图像进行预处理和特征提取。具体操作包括将图像转换为灰度图、应用高斯模糊以去噪、提取颜色直方图特征并进行归一化处理。在基于 STM32 的车牌识别控制系统设计中,图像处理模块是车牌识别系统的关键部分,包括图像预处理、车牌定位、字符分割和字符识别等步骤。通过图像处理算法,系统可以准确地识别出车牌号码。

4. 分类模块

分类模块对提取的特征进行分类并返回结果。在水果分类解决方案中,利用 Scikit-learn 库训练决策树模型,根据图像处理模块提取的特征对水果进行分类。在基于 STM32 的车牌识别控制系统设计中,通过模式识别、匹配,最后获得车牌的识别结果。

5. 用户交互模块

用户交互模块通过显示屏显示分类结果,并通过按键触发拍照等操作。在水果分类解决方案中,用户交互模块通过 OLED 显示屏显示分类结果,并通过按键触发拍照。用户可以直观地看到水果的分类结果,并且可以通过按键控制图像采集的时机。在基于单片机的智能密码门锁多功能控制系统中,通过 LCD 显示屏等设备,显示当前门锁状态、密码输入提示、错误提示等信息,同时提供用户设置密码、修改密码、查询门锁状态等交互功能。


http://www.ppmy.cn/embedded/140735.html

相关文章

计算机网络:应用层知识点概述及习题

网课资源: 湖科大教书匠 1、概述 习题1 1 在计算机网络体系结构中,应用层的主要功能是 A. 实现进程之间基于网络的通信 B. 通过进程之间的交互来实现特定网络应用 C. 实现分组在多个网络上传输 D. 透明传输比特流 2 以下不属于TCP/IP体系结构应用层范畴…

5种常见的k8s云原生数据管理方案详解

Kubernetes(K8s)是云原生架构的核心组件,提供高效的容器编排和管理功能。在数据存储方面,K8s通过PersistentVolumes(PV)和PersistentVolumeClaims(PVC)机制实现数据持久化&#xff0…

STM32F103C8T6实时时钟RTC

目录 前言 一、RTC基本硬件结构 二、Unix时间戳 2.1 unix时间戳定义 2.2 时间戳与日历日期时间的转换 2.3 指针函数使用注意事项 ​三、RTC和BKP硬件结构 四、驱动代码解析 前言 STM32F103C8T6外部低速时钟LSE(一般为32.768KHz)用的引脚是PC14和PC…

从 Llama 1 到 3.1:Llama 模型架构演进详解

编者按: 面对 Llama 模型家族的持续更新,您是否想要了解它们之间的关键区别和实际性能表现?本文将探讨 Llama 系列模型的架构演变,梳理了 Llama 模型从 1.0 到 3.1 的完整演进历程,深入剖析了每个版本的技术创新&#…

LeetCode739. 每日温度(2024冬季每日一题 15)

给定一个整数数组 temperatures ,表示每天的温度,返回一个数组 answer ,其中 answer[i] 是指对于第 i 天,下一个更高温度出现在几天后。如果气温在这之后都不会升高,请在该位置用 0 来代替。 示例 1: 输入: temperatu…

TCP vs UDP:如何选择适合的网络传输协议?

在网络通信中,TCP(Transmission Control Protocol)和UDP(User Datagram Protocol)是两种非常重要的传输层协议。它们各有特点,适用于不同类型的应用场景。本文将详细探讨TCP和UDP协议的结构、优缺点及应用&…

OpenCV 计算图像清晰度

文章目录 一、简介二、实现代码三、实现效果一、简介 我们往往怎么定义一个图像的清晰度呢,通常来讲一个图像的清晰度越高,其图像细节越丰富,也就是说我们通常可以通过图像的高频信息(如边缘或噪声)来衡量。OK,既然如此,这里可以使用 拉普拉斯算子(cv::Laplacian)先对…

iOS构建版本以及Hbuilder打iOS的ipa包全流程

目录 Hbuilder打ipa包 打包之前进行应用配置 应用版本号设置 使用广告标识设置 iOS-云打包 下载并转移安装包 使用Transporter提交版本 应用简介 下载应用 账号登录 提交安装包到apple store connect 在apple开发者平台上确认 总结 本篇文章详细的介绍了使用Hbuil…