单片机结合OpenCV

目录

一、引言

二、单片机结合 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.mzph.cn/diannao/61557.shtml

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

相关文章

nohup java -jar supporterSys.jar --spring.profiles.active=prod

文章目录 1、ps -ef | grep java2、kill 13713、ps -ef | grep java4、nohup java -jar supporterSys.jar --spring.profiles.activeprod &5、ps -ef | grep java1. 启动方式进程 1371进程 19994 2. 主要区别3. 可能的原因4. 建议 1、ps -ef | grep java rootshipper:~# p…

Ubuntu上安装MySQL并且实现远程登录

目录 下载网络工具 查看网络连接 更新系统软件包; 安装mysql数据库 查看mysql数据库状态 以数字ip形式显示mysql的监听状态。(默认监听端口是3306) 查看安装mysql数据库时系统创建的目录信息。 根据查询到的系统用户名以及随机密码&a…

shell编写——脚本传参与运算

shell编写——脚本传参与运算 声明! 学习视频来自B站up主 泷羽sec 有兴趣的师傅可以关注一下,如涉及侵权马上删除文章,笔记只是方便各位师傅的学习和探讨,文章所提到的网站以及内容,只做学习交流,其他均与本…

设计模式之 观察者模式

观察者模式(Observer Pattern)是一种行为型设计模式,它定义了一种一对多的依赖关系,让多个观察者对象同时监听一个主题对象(Subject)。当主题对象的状态发生变化时,所有依赖于它的观察者都会得到…

深入了解 Linux htop 命令:功能、用法与示例

文章目录 深入了解 Linux htop 命令:功能、用法与示例什么是 htop?htop 的安装htop的基本功能A区:系统资源使用情况B区:系统概览信息C区:进程列表D区:功能键快捷方式 与 top 的对比常见用法与示例实际场景应…

【深度学习】【RKNN】【C++】模型转化、环境搭建以及模型部署的详细教程

【深度学习】【RKNN】【C】模型转化、环境搭建以及模型部署的详细教程 提示:博主取舍了很多大佬的博文并亲测有效,分享笔记邀大家共同学习讨论 文章目录 【深度学习】【RKNN】【C】模型转化、环境搭建以及模型部署的详细教程前言模型转换--pytorch转rknnpytorch转onnxonnx转rkn…

【spark】远程debug spark任务(含有pyspark)

--master yarn和--master client都是可以的。 spark-submit \ --master yarn \ --deploy-mode client \ --name "test-remote-debug" \ --conf "spark.driver.extraJavaOptions-agentlib:jdwptransportdt_socket,servery,suspendn,address5005" \ --conf …

如何使用 Vivado 从源码构建 Infinite-ISP FPGA 项目

如约介绍源码构建 Infinite-ISP 项目,其实大家等的是源码,所以中间过程简洁略过,可以直接翻到文末获取链接。 开源ISP(Infinite-ISP)介绍 构建工程 第一步,从文末或者下面链接获取源码 https://github.com/…

彻底理解Redis的持久化方式

一.由来 因为Redis之所以能够提供高效读写的操作,是因为它是基于内存的,但是这样也会带来一个问题,及在服务器宕机或者重启的情况下,内存里面的数据就会被丢失掉,所以为了解决这个问题,Redis就提供了持久化…

Bug Fix 20241122:缺少lib文件错误

今天有朋友提醒才突然发现 gitee 上传的代码存在两个很严重,同时也很低级的错误。 因为gitee的默认设置不允许二进制文件的提交, 所以PH47框架下的库文件(各逻辑层的库文件),以及Stm32Cube驱动的库文件都没上传到Gi…

NVR管理平台EasyNVR多个NVR同时管理:全方位安防监控视频融合云平台方案

EasyNVR是基于端-边-云一体化架构的安防监控视频融合云平台,具有简单轻量的部署方式与多样的功能,支持多种协议(如GB28181、RTSP、Onvif、RTMP)和设备类型(IPC、NVR等),提供视频直播、录像、回放…

微服务架构:10个实用设计模式

1 微服务架构 微服务架构的重要特征 微服务架构的优点 微服务架构的缺点 何时使用微服务架构 2 微服务架构的设计模式 独享数据库(Database per Microservice) 事件源(Event Sourcing) 命令和查询职责分离(CQRS&…

华为欧拉系统使用U盘制作引导安装华为欧拉操作系统

今天记录一下通过U盘来安装华为欧拉操作系统 华为欧拉操作系统是国产的一个类似于Centos的Linus系统 具体实现操作步骤: 先在官网下载欧拉系统镜像点击跳转到下载 准备好一个大于16g的U盘 ,用于制作U盘启动 下载一个引导程序制作工具,我使用…

20241121 android中树结构列表(使用recyclerView实现)

1、adapter-item的布局 <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas.android.com/apk/res/android"android:layout_width"match_parent"android:layout_height"wrap_content&…

C++初阶学习 第十二弹——stack与queue的介绍和使用

目录 一、stack&#xff08;栈&#xff09; 1.栈的概念&#xff1a; 2.成员函数包括&#xff1a; 3.栈的使用示例: 4. 使用时的注意事项&#xff1a; 二.queue&#xff08;队列&#xff09; 1.队列的概念 2.成员函数 3.队列的使用示例 4.使用时的注意事项 三.总结…

如何实现点击目录跳转到指定位置?【vue】

需求&#xff1a;实现目录点击跳转到指定位置&#xff0c;点击后直接定位到指定模块 效果&#xff1a; 实现方法&#xff1a; &#xff08;1&#xff09;a标签跳转 普通使用&#xff1a; <!DOCTYPE html> <html><head><title>a-Demo</title>&l…

【SKFramework框架】二、快速启动

推荐阅读 CSDN主页GitHub开源地址Unity3D插件分享QQ群&#xff1a;398291828小红书小破站 大家好&#xff0c;我是佛系工程师☆恬静的小魔龙☆&#xff0c;不定时更新Unity开发技巧&#xff0c;觉得有用记得一键三连哦。 一、前言 【Unity3D框架】SKFramework框架完全教程《全…

鸿蒙多线程开发——线程间数据通信对象02

1、前 言 本文的讨论是接续鸿蒙多线程开发——线程间数据通信对象01的讨论。在上一篇文章中&#xff0c;我们讨论了常规的JS对象(普通JSON对象、Object、Map、Array等)、ArrayBuffer。其中讨论了ArrayBuffer的复制传输和转移传输方式。 下面&#xff0c;我们将讨论SharedArra…

时序论文22|ICML24港科大:面向多变量不规则的时间序列预测方法

论文标题&#xff1a;Irregular Multivariate Time Series Forecasting: A Transformable Patching Graph Neural Networks Approach 论文链接&#xff1a;https://openreview.net/pdf?idUZlMXUGI6e 前言 这篇文章在“定位研究问题”方面很值得学习。其实前段时间对时序研究…

Linux离线安装Docker命令,简单镜像操作

解压安装包 首先&#xff0c;使用 tar 命令解压 docker-27.3.1.tgz 安装包&#xff1a; tar -zxvf docker-27.3.1.tgz 将二进制文件移动到可执行路径上的目录 接着&#xff0c;将解压出来的 Docker 二进制文件复制到系统的可执行路径&#xff08;通常是 /usr/bin/&#xff09…