当前位置: 首页 > news >正文

OpenCV图像金字塔详解:原理、实现与应用

一、什么是图像金字塔?

图像金字塔是图像处理中一种重要的多尺度表示方法,它通过对图像进行重复的平滑和降采样(或上采样)操作,生成一系列分辨率逐渐降低(或升高)的图像集合。这种结构形似金字塔,因此得名"图像金字塔"。

图像金字塔在计算机视觉领域有着广泛的应用,包括:

  • 图像融合与无缝拼接
  • 目标检测(如人脸检测)
  • 图像分割
  • 特征提取
  • 图像压缩等

二、图像金字塔的类型

OpenCV中主要支持两种类型的图像金字塔:

1. 高斯金字塔(Gaussian Pyramid)

高斯金字塔是通过不断对图像进行高斯平滑和下采样得到的。每一层图像都是前一层图像经过高斯模糊后,再隔行隔列降采样得到的。

构建过程:

  1. 对当前层图像进行高斯模糊
  2. 删除所有的偶数行和偶数列
  3. 得到的新图像就是金字塔的下一层

2. 拉普拉斯金字塔(Laplacian Pyramid)

拉普拉斯金字塔是由高斯金字塔构建而来的,它保存的是高斯金字塔每一层与其上一层扩展后的差异信息。可以看作是图像的边缘和细节信息。

构建过程:

  1. 对高斯金字塔的某一层图像进行上采样
  2. 用高斯核对上采样后的图像进行卷积(近似扩展)
  3. 计算扩展后的图像与上一层图像的差异
  4. 这个差异图像就是拉普拉斯金字塔的当前层

三、OpenCV中的图像金字塔实现

OpenCV提供了pyrDown()pyrUp()函数来构建高斯金字塔,而拉普拉斯金字塔可以通过高斯金字塔计算得到。

1.1 高斯金字塔实现(下采样)

import cv2
from cv2 import IMREAD_GRAYSCALE'''--------------高斯金字塔操作中的向下采样----------------'''
#先进行高斯滤波
#再删除其偶数行与偶数列,完成一次下采样#  下采样 是一种减小图像尺寸的方法,它通常涉及到降低图像的分辨率,即减少图像中像素的数量,从而使图像看起来更小。
#  上采样 是一种增大图像尺寸的方法,它通过插值和滤波技术来恢复图像的分辨率和细节,通常用于图像放大或者与下采样后的图像进行比较。
#  resize函数  是一种通用的图像尺寸调整方法,它可以按照指定的目标尺寸来缩放图像,不涉及金字塔结构或者特定的滤波操作。# dst = cv2.pyrDown(src [,dst, dstsize [, borderType] ])
# dst:目标图像
# src:原始图像
# dstsize:目标图像的大小face=cv2.imread('face.png',IMREAD_GRAYSCALE)
cv2.imshow('face',face)
cv2.waitKey(0)face_down_1=cv2.pyrDown(face)  #下采样处理
cv2.imshow('down_1',face_down_1)
cv2.waitKey(0)face_down_2=cv2.pyrDown(face_down_1)
cv2.imshow('down_2',face_down_2)
cv2.waitKey(0)face_down_1_up=cv2.pyrUp(face_down_1)
face_down_2_up=cv2.pyrUp(face_down_2)cv2.imshow('down_1_up',face_down_1_up)
cv2.imshow('down_2_up',face_down_2_up)
cv2.waitKey(0)cv2.destroyAllWindows()

1.2 高斯金字塔实现(上采样)

import cv2
from cv2 import IMREAD_GRAYSCALE'''--------------高斯金字塔操作中的向下采样----------------'''
#插值
#高斯滤波#  下采样 是一种减小图像尺寸的方法,它通常涉及到降低图像的分辨率,即减少图像中像素的数量,从而使图像看起来更小。
#  上采样 是一种增大图像尺寸的方法,它通过插值和滤波技术来恢复图像的分辨率和细节,通常用于图像放大或者与下采样后的图像进行比较。
#  resize函数  是一种通用的图像尺寸调整方法,它可以按照指定的目标尺寸来缩放图像,不涉及金字塔结构或者特定的滤波操作。# dst = cv2.pyrDown(src [,dst, dstsize [, borderType] ])
# dst:目标图像
# src:原始图像
# dstsize:目标图像的大小face=cv2.imread('face.png',IMREAD_GRAYSCALE)
cv2.imshow('face',face)
cv2.waitKey(0)face_up_1=cv2.pyrUp(face)
cv2.imshow('up_1',face_up_1)
cv2.waitKey(0)face_up_2=cv2.pyrUp(face_up_1)
cv2.imshow('up_2',face_up_2)
cv2.waitKey(0)face_up_1_down=cv2.pyrDown(face_up_1)
face_up_2_down=cv2.pyrDown(face_up_2)cv2.imshow('up_1_down',face_up_1_down)
cv2.imshow('up_2_down',face_up_2_down)
cv2.waitKey(0)cv2.destroyAllWindows()

2. 拉普拉斯金字塔实现

import cv2'''---------------拉普拉斯金字塔------------------'''#由原图的采样时丢失的信息组成的face=cv2.imread('face.png',cv2.IMREAD_GRAYSCALE)
cv2.imshow('face',face)
cv2.waitKey(0)face_down_1=cv2.pyrDown(face)
face_down_2=cv2.pyrDown(face_down_1)face_up_1=cv2.pyrUp(face)
face_up_2=cv2.pyrUp(face_up_1)face_down_1_up=cv2.pyrUp(face_down_1)
face_down_2_up=cv2.pyrUp(face_down_2)#获取损失信息
L0=face-face_down_1_up
L1=face_down_1-face_down_2_upfuyuan=face_down_1_up+L0cv2.imshow('L0',L0)
cv2.imshow('L1',L1)
cv2.waitKey(0)
cv2.imshow('fuyuan',fuyuan)
cv2.waitKey(0)cv2.destroyAllWindows()

四、图像金字塔的应用实例

1. 图像融合

图像金字塔常用于图像融合,如将两张图像无缝拼接在一起:

def image_blending(img1, img2, mask, levels=6):# 生成高斯金字塔G1 = img1.copy()G2 = img2.copy()GM = mask.copy()gp1 = [G1]gp2 = [G2]gpM = [GM]for i in range(levels):G1 = cv2.pyrDown(G1)G2 = cv2.pyrDown(G2)GM = cv2.pyrDown(GM)gp1.append(G1)gp2.append(G2)gpM.append(GM)# 生成拉普拉斯金字塔lp1 = [gp1[levels-1]]lp2 = [gp2[levels-1]]gpMr = [gpM[levels-1]]for i in range(levels-1, 0, -1):size = (gp1[i-1].shape[1], gp1[i-1].shape[0])L1 = cv2.subtract(gp1[i-1], cv2.pyrUp(gp1[i], dstsize=size))L2 = cv2.subtract(gp2[i-1], cv2.pyrUp(gp2[i], dstsize=size))lp1.append(L1)lp2.append(L2)gpMr.append(gpM[i-1])# 融合LS = []for l1, l2, gm in zip(lp1, lp2, gpMr[::-1]):gm = gm/255.0ls = l1 * gm + l2 * (1.0 - gm)LS.append(ls)# 重建图像ls_ = LS[0]for i in range(1, levels):size = (LS[i].shape[1], LS[i].shape[0])ls_ = cv2.add(cv2.pyrUp(ls_, dstsize=size), LS[i])return ls_# 使用示例
img1 = cv2.imread('image1.jpg')
img2 = cv2.imread('image2.jpg')
mask = cv2.imread('mask.jpg', 0)  # 二值掩模result = image_blending(img1, img2, mask)
cv2.imshow('Blended Image', result)
cv2.waitKey(0)
cv2.destroyAllWindows()

2. 图像超分辨率

虽然图像金字塔主要用于降采样,但结合深度学习等方法,金字塔结构也可以用于图像超分辨率任务。

五、性能优化与注意事项

  1. 金字塔层数选择:金字塔的层数不宜过多,一般不超过6-7层,否则最高层的图像会太小而失去意义。

  2. 边界处理:在进行金字塔操作时,OpenCV会自动处理边界问题,但如果需要自定义实现,需要注意边界条件的处理。

  3. 内存考虑:构建金字塔会生成多幅图像,占用较多内存,在处理大图像时需要注意。

  4. 性能优化:对于实时应用,可以考虑只构建必要的金字塔层级,或者使用ROI(感兴趣区域)来减少计算量。

六、总结

图像金字塔是计算机视觉中一项基础而重要的技术,它通过多尺度表示图像信息,为许多高级视觉任务提供了便利。OpenCV提供了简单易用的金字塔构建函数,使得开发者可以轻松实现各种基于金字塔的算法。掌握图像金字塔的原理和应用,将有助于你解决更复杂的图像处理问题。

相关文章:

OpenCV图像金字塔详解:原理、实现与应用

一、什么是图像金字塔? 图像金字塔是图像处理中一种重要的多尺度表示方法,它通过对图像进行重复的平滑和降采样(或上采样)操作,生成一系列分辨率逐渐降低(或升高)的图像集合。这种结构形似金字…...

AI Agent(11):垂直行业应用

引言 本文将聚焦AI Agent在金融、医疗健康、制造业以及零售与电商四个重要垂直行业的应用。我们将分析每个行业的特定需求和挑战,探讨AI Agent如何通过专业化能力为这些行业创造价值,并展望未来发展趋势。 垂直行业AI Agent的核心价值在于将通用AI能力与行业专业知识深度结…...

FFmpeg 项目中的三大核心工具详解

FFmpeg 项目中的三大核心工具详解 FFmpeg 是一个功能强大的开源多媒体框架,能够处理几乎所有格式的音视频文件。它包含三个主要的命令行工具:ffmpeg、ffplay 和 ffprobe,这三个工具各自承担不同的功能,共同构成了 FFmpeg 项目的核心。下面将全面详细地介绍这三个工具。 1…...

【Linux网络】 HTTP cookie与session

HTTP cookie与session 引入HTTP Cookie 定义 HTTP Cookie(也称为Web Cookie、浏览器Cookie或简称Cookie)是服务器发送到用户浏览器并保存在浏览器上的一小块数据,它会在浏览器之后向同一服务器再次发起请求时被携带并发送到服务器上。通常&…...

STM32入门教程——GPIO输出

前言 本教材基于B站江协科技课程整理,适合有C语言基础、刚接触STM32的新手。它梳理了STM32核心知识点,帮助大家把C语言知识应用到STM32开发中,更高效地开启STM32学习之旅。 目录 前言 1.知识储备 1.GPIO简介 2.GPIO基本结构 1.APB2外设…...

MongoDB使用x.509证书认证

文章目录 自定义证书生成CA证书生成服务器之间的证书生成集群证书生成用户证书 MongoDB配置java使用x.509证书连接MongoDBMongoShell使用证书连接 8.0版本的mongodb开启复制集,配置证书认证 自定义证书 生成CA证书 生成ca私钥: openssl genrsa -out ca…...

FEKO许可证的安全与合规性

在电磁仿真领域,FEKO软件因其出类拔萃的性能和广泛的应用场景,赢得了全球用户的广泛赞誉。但在这背后,是什么让FEKO在众多竞争者中脱颖而出?答案是其许可证的安全与合规性。它们不仅为用户提供了坚固的保障,更确保了用…...

AI大模型学习二十、利用Dify+deepseekR1 使用知识库搭建初中英语学习智能客服机器人

一、说明 很多情况下 LLM 知识库可以让 Agent 从中定位到准确的信息,从而准确地回答问题。在一些特定领域,比如客服、检索工具等有应用。 传统的客服机器人往往是基于关键词检索的,当用户输入了关键词以外的问题,机器人就无法解决…...

kubuntu系统详解

Kubuntu 系统深度解析(从系统架构到用户体验) 一、定位与核心特性 Kubuntu 是 Ubuntu 的官方 KDE 衍生版,基于 Ubuntu 的稳定底层(Debian 技术栈),搭载 KDE Plasma 桌面环境,主打 “功能丰富、…...

【AutoGen革命】多智能体协作系统的架构设计与工程实践

目录 🌍 前言🏗️ 技术背景与价值🚨 当前技术痛点🛠️ 解决方案全景👥 目标读者画像 🧠 一、技术原理剖析🖼️ 系统架构图解💡 核心运行机制⚙️ 关键技术组件🔄 技术选型…...

西电 | 2025年拟录取研究生个人档案录取通知书邮寄通知

各位考生: 我校2025年硕士研究生录取工作已结束,根据相关工作管理规定,现将个人档案转调及录取通知书邮寄信息确认等有关事宜通知如下: 一、个人档案转调 (邮寄档案请务必使用EMS) 1.全日制考生 录取类…...

9.0 C# 调用solidworks介绍1

一、C# 与 SolidWorks 联合开发概述 SolidWorks 提供了完整的 API(应用程序接口),允许开发者使用 C# 等编程语言进行二次开发,实现自动化设计、定制功能等。 主要技术要点包括: 1. API 结构:SolidWorks API 是基于 COM 的接口,包含数百个对象和数千个方法…...

Linux复习笔记(三) 网络服务配置(web)

遇到的问题,都有解决方案,希望我的博客能为你提供一点帮助。 二、网络服务配置 2.3 web服务配置 2.3.1通信基础:HTTP协议与C/S架构(了解) ​​HTTP协议的核心作用​​ Web服务基于HTTP/HTTPS协议实现客户端&#xff…...

git和gdb

git基础使用 相关概念 本地仓库:自己电脑上git客户端 远端仓库:管理员端的git服务端 多人协作:文件开源,可以多个人一起修改 前提 1.一个仓库 2.确认git有没有安装 3.把远端仓库clone 这一步执行完后我们执行ll可以看到&…...

CSRF记录

CSRF(Cross-site request forgery)跨站请求伪造:攻击者诱导受害者进入第三方网站,在第三方网站中,向被攻击网站发送跨站请求。利用受害者在被攻击网站已经获取的注册凭证,绕过后台的用户验证,达…...

嵌入式MCU和Linux开发哪个好?

MCU与Linux:十年磨剑后的选择之道 MCU和Linux到底怎么选?这是一个老生畅谈的问题。 而我更想说,这不是简单的优劣对比,而是两条不同的道路,通往不同的风景。今天,我想以一个老兵的视角,聊聊这…...

2024年北理工Python123第六章编程题整理

这章的编程题都好少,难度也不高 开始进入文件的输入输出 一、字典翻转输出 我的代码: ori_dic eval(input()) dic{} if(not isinstance(ori_dic,dict)):#验证输入格式print(输入错误) else:for item in ori_dic.keys():dic[ori_dic.get(item)]itempri…...

一、HAL库的设计理念详解:从架构到实践

HAL库的设计理念详解:从架构到实践 一、HAL库的诞生背景与核心目标 STM32 HAL库(Hardware Abstraction Layer)是STMicroelectronics在2016年推出的新一代驱动框架,旨在解决STM32系列芯片不断扩展带来的开发复杂性问题。随着STM3…...

【Python】UV:单脚本依赖管理

一、基础概念 什么是 Python 脚本 以 .py 结尾的文件,可通过 python script.py 独立执行。UV 工具优势:无需手动创建或激活虚拟环境,自动为每个脚本生成隔离环境,保证依赖互不干扰。 环境管理原理 graph LRA[系统 Python 环境] -…...

多线程(2)——Thread类及常见方法

目录 构造方法常见属性前台线程,后台线程 启动一个线程——start()中断(终止)一个线程方法1:通过变量方法2:使用 isInterrupted() ---线程内置的标志位 等待一个线程——join()join设置等待时间 获取当前线程引用---cu…...

Neo4j 入门级使用

一、集成步骤 (一)创建 Spring Boot 项目 使用 Spring Initializr 创建项目时,选择 Maven 或 Gradle 作为项目构建工具,选择合适的 Spring Boot 版本,并添加 “Spring Data Neo4j” 依赖。 (二&#xff…...

解决 CJSON 浮点数精度问题:从 `cJSON_AddNumberToObject` 到 `cJSON_AddRawToObject`

在使用 CJSON 库处理浮点数时,开发者常会遇到一个棘手问题:浮点数的小数位精度丢失。例如,数值 3.1400 可能被简化为 3.14,甚至 5.0 被显示为 5。这种默认行为在需要严格保留小数位的场景(如金融、物联网传感数据&…...

ESP32开发入门(九):HTTP服务器开发实践

一、HTTP服务器基础 1.1 什么是HTTP服务器? HTTP服务器是能够处理HTTP请求并返回响应的网络服务程序。在物联网应用中,ESP32可以作为轻量级HTTP服务器,直接接收来自客户端(如浏览器、手机APP)的请求。 1.2 ESP32作为HTTP服务器的特点 轻量…...

谱聚类,大模型

使用谱聚类将相似度矩阵分为2类的步骤如下: 1. **构建相似度矩阵**:提供的1717矩阵已满足对称性且对角线为1。 2. **计算度矩阵**:对每一行求和得到各节点的度,形成对角矩阵。 3. **计算归一化拉普拉斯矩阵**:采用对…...

K8S Ingress、IngressController 快速开始

假设有如下三个节点的 K8S 集群: ​ k8s31master 是控制节点 k8s31node1、k8s31node2 是工作节点 容器运行时是 containerd 一、理论介绍 1)什么是 Ingress 定义:Ingress 是 Kubernetes 中的一种资源对象,它定义了外部访问集群内…...

AI边缘网关_5G/4G边缘计算网关厂家_计讯物联

AI边缘网关是边缘计算与人工智能技术深度融合的产物,作为连接终端设备与云端的桥梁,在网络边缘实现数据采集、实时分析、智能决策和协议转换,显著降低了数据传输延迟,节省了云端资源,并提升了隐私保护能力,…...

【Vue】Composables 和 Utils 区别

1. 核心功能与状态管理 • Composables 用于封装有状态的逻辑,通常结合 Vue 的响应式 API(如 ref、reactive)和生命周期钩子(如 onMounted),可管理组件内部的状态和副作用。例如,封装鼠标位置…...

右值和移动

值类别(value categories) lvalue 通常可以放在等号左边的表达式, 左值 例子 变量&#xff0c;函数或数据成员的名字返回左值引用的表达式&#xff0c;如x, x 1, cout << ’ . x 1 和 x返回的都是对x的int&. x则返回的是int字符串字面量如 “hello world” rva…...

如何在 Bash 中使用 =~ 操作符 ?

在 Bash 脚本世界中&#xff0c;有各种操作符可供我们使用&#xff0c;使我们能够操作、比较和测试数据。其中一个操作符是 ~ 操作符。这个操作符经常被忽视&#xff0c;但功能非常强大&#xff0c;它为我们提供了一种使用正则表达式匹配字符串模式的方法。 ~ 操作符语法 语法…...

消息队列RocketMQ-docker部署保姆级教程(从0到1)(2)

目录 引言 1. 准备工作 1.1 准备虚拟机 1.2 将虚拟机的ip设置为静态ip地址 1.3 什么是nat网络 1.4 测试网络 2. 准备docker环境 2.1 卸载旧docker&#xff08;如果有&#xff09; 2.2 安装依赖包 2.3 添加 Docker 官方仓库&#xff08;国内推荐使用阿里云镜像&#xf…...

《算法导论(第4版)》阅读笔记:p32-p38

《算法导论(第4版)》学习第 12 天&#xff0c;p32-p38 总结&#xff0c;总计 7 页。 一、技术总结 1.analyzing algorithms (1)running time(运行时间) worst-case running time, average-case running time&#xff0c;best-case running-time。 2.order of growth/rate …...

《Effective Python》第1章 Pythonic 思维详解——深入理解流程控制中的解构利器match

《Effective Python》第1章 Pythonic 思维详解——深入理解流程控制中的解构利器match 引言 Python 3.10 引入了全新的 match 语句&#xff0c;它不仅是一个“类 switch”的语法结构&#xff0c;更是一种**结构化模式匹配&#xff08;structural pattern matching&#xff09…...

【氮化镓】横向GaN 器件注入隔离区的电场相关载流子传输特性

文章的关键结论和发现如下: 在GaN横向功率器件中,注入隔离区的载流子传输具有明显的电场依赖性,且其泄漏电流和击穿特性主要由注入的GaN区域决定,与缓冲层和UID GaN层的性质关系不大。 载流子传输机制随电场强度变化呈现三个不同区域:低电场下为欧姆传导,符合变程跃迁(V…...

电子电器架构 --- 借力第五代架构,驱动汽车产业创新引擎

我是穿拖鞋的汉子&#xff0c;魔都中坚持长期主义的汽车电子工程师。 老规矩&#xff0c;分享一段喜欢的文字&#xff0c;避免自己成为高知识低文化的工程师&#xff1a; 钝感力的“钝”&#xff0c;不是木讷、迟钝&#xff0c;而是直面困境的韧劲和耐力&#xff0c;是面对外界…...

【ROS2】通信部署概述(以话题(Topic)通信为例)

写在前面 很多内容参考了赵虚左老师的ROS2教程 概念说明 工作空间&#xff1a;相当于一个项目&#xff0c;比如一台机械臂&#xff0c;或者一个机器人 功能包&#xff1a;相当于一个项目中的一台设备&#xff0c;如电机、雷达、相机等 大概构建流程 以话题通信机制为例 创…...

1.8 梯度

&#xff08;知识体系演进逻辑树&#xff09; 一元导数&#xff08;1.5&#xff09; │ ├─→ 多元偏导数&#xff08;1.6核心突破&#xff09; │ │ │ └─解决&#xff1a;多变量耦合时的单变量影响分析 │ │ │ ├─几何&#xff1a;坐标轴切片切线斜率…...

Pycharm中No Conda enviroment selected

最近在学习Anaconda&#xff0c;换了台新电脑重新安装PyCharm和Anaconda后&#xff0c;打算创建环境&#xff0c;创建后发现找不到刚刚在Anaconda中创建的环境&#xff0c;经过不断摸索后找到解决方案 将选择的路径从Anaconda目录下的python.exe换成Anaconda\Library\bin下的c…...

continue通过我们的开源 IDE 扩展和模型、规则、提示、文档和其他构建块中心,创建、共享和使用自定义 AI 代码助手

​一、软件介绍 文末提供程序和源码下载 Continue 使开发人员能够通过我们的开源 VS Code 和 JetBrains 扩展以及模型、规则、提示、文档和其他构建块的中心创建、共享和使用自定义 AI 代码助手。 二、功能 Chat 聊天 Chat makes it easy to ask for help from an LLM without…...

关于读写锁的一些理解

同一线程的两种情况&#xff1a; 读读&#xff1a; public static void main(String[] args) throws InterruptedException {ReentrantReadWriteLock lock new ReentrantReadWriteLock();Lock readLock lock.readLock();Lock writeLock lock.writeLock();readLock.lock();S…...

Ubuntu网络部署LNMP环境

目录 1. 安装nginx 2. 安装mysql 3. 安装PHP 4. 配置nginx&#xff0c;修改默认配置文件 5. 配置PHP 1. 安装nginx apt install -y nginx#开启 systemctl start nginx#浏览器访问页面 192.168.180.200:80#nginx网页html存放路径 ls /usr/share/nginx/#查看nginx版本号 ng…...

榜单按行显示

手机芯片_SoC天梯榜_安兔兔跑分排行_安兔兔 我只关注 骁龙7Gen1&#xff0c;天玑7300&#xff0c;骁龙6Gen1&#xff0c;天玑900 除了 50,64,75,86 行都隐藏。 var uls document.getElementsByClassName(newrank-c); var s 50,64,75,86; var sa s.split(,); for (var i0…...

DVWA在线靶场-xss部分

目录 1. xxs&#xff08;dom&#xff09; 1.1 low 1.2 medium 1.3 high 1.4 impossible 2. xss&#xff08;reflected&#xff09; 反射型 2.1 low 2.2 medium 2.3 high 2.4 impossible 3. xss&#xff08;stored&#xff09;存储型 --留言板 3.1 low 3.2 medium 3.3 high 3.…...

将本地文件上传到云服务器上

使用 SCP 命令&#xff08;最常用&#xff09; # 基本语法 scp [本地文件路径] [用户名][服务器IP]:[目标路径]# 示例&#xff1a;上传单个文件 scp /path/to/local/file.txt root192.168.1.100:/path/to/remote/# 上传整个目录 scp -r /path/to/local/directory root192.168.…...

关系实验课--笛卡尔积

import sympy as sym a, b sym.symbols(a b) # 定义符号 a 和 b A sym.FiniteSet(a,b) # 创建包含 a 和 b 的有限集合 B sym.FiniteSet(1,2,3,4) AxB sym.cartes(A,B) # 返回迭代器。迭代器不会直接显示内容&#xff0c;而是需要手动遍历或转换为其他数据类型&#xff08;如…...

从0开始学习大模型--Day07--大模型的核心知识点

AI常见名词 知识库 分为传统知识库与AI知识库&#xff0c;前者是单纯的存储各个领域的知识&#xff0c;后者则是与LLM结合&#xff0c;使AI系统能够更好地利用本地知识来响应查询和执行任务。比如&#xff0c;假如公司新来了个维修人员&#xff0c;他可以直接调用AI知识库去学…...

无线定位之 二 SX1302 网关源码 thread_down 线程详解

前言 笔者计划通过无线定位系列文章、系统的描述 TDOA 无线定位和混合定位相关技术知识点, 并以实践来验证此定位系统精度。 笔者从实践出发、本篇直接走读无线定位系统关键节点、网关 SX1302 源码框架,并在源码走读过程 中、着重分析与无线定位相关的PPS时间的来龙去脉、并在…...

MINIX 1.0 文件系统的实现(C/C++实现)

MINIX 1.0 文件系统简介&#xff1a; Linux 0.11操作系统启动时需要加载一个根目录&#xff0c;此根目录使用的是MINIX 1.0文件系统&#xff0c;其保存在硬盘的第一个分区中。Linux 0.11操作系统将硬盘上的两个连续的物理扇区&#xff08;大小为512字节&#xff09;做为一个物理…...

Spring Data Elasticsearch 中 ElasticsearchOperations 构建查询条件的详解

Spring Data Elasticsearch 中 ElasticsearchOperations 构建查询条件的详解 前言一、引入依赖二、配置 Elasticsearch三、创建模型类&#xff08;Entity&#xff09;四、使用 ElasticsearchOperations 进行 CRUD 操作1. 保存数据&#xff08;Create&#xff09;2. 获取数据&am…...

keil 解决 Error: CreateProcess failed, Command: ‘XXX\ARM\ARMCC\bin\fromelf.exe

参考文章链接&#xff1a; https://blog.csdn.net/qq_39172792/article/details/145499880 自己的&#xff1a; D:\Program Files\keil529\Keil_v5\ARM\ARMCLANG\bin\fromelf.exe --bin -o …/…/firmware_bin/L.bin ./Object/L.axf...

针对面试-mysql篇

1.如何定位慢查询? 1.1.介绍一下当时产生问题的场景(我们当时的接口测试的时候非常的慢&#xff0c;压测的结果大概5秒钟))&#xff0c;可以监测出哪个接口&#xff0c;最终因为是sql的问题 1.2.我们系统中当时采用了运维工具(Skywalkin就是2秒&#xff0c;一旦sql执行超过2秒…...