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

VisionPro斑点寻找工具Blob

斑点寻找工具Blob

斑点概述

  • 斑点分析 探测并且分析图像中的二维形状
  • Blob是先根据用户设定好的灰阶范围对图像进行分割,然后对目标进行查找和分析。
  • 斑点报告多种属性:
    • 面积
    • 质心
    • 周长
    • 主轴
    • ……..

应用场景

  • Blob分析非常适合以下场合的应用:
    • 对象在尺寸、形状和/或方向上差异很大(训练模型很难或者不可能)
    • 对象有背景中找不到的截然不同的灰度
    • 对象没有重叠或者接触
  • 应用案例:
    • 检查环氧树脂点分配的数量、尺寸和形状
    • 检查表示坏薄片模型的墨水点的正确位置和大小
    • 检查药片的破碎和大小
    • 根据对象的尺寸、形状或位置整理或者分类对象

原理

  • Blob是先根据用户设定好的灰阶范围对图像进行分割,然后对目标进行查找和分析。
  • 有数种模式可以指定哪些可以将斑点与背景像素分开

运行作业

  1. 选择安装目录下blobs图片
  2. 添加Blob工具
  3. 运行

参数介绍

极性

      • 在光亮背景上的黑色斑点
      • 在黑色背景上的光亮斑点

白色的是斑点,黑色的是孔

先根据用户设定好的灰阶范围对图像进行分割,然后对目标进行查找和分析。

阀值

将斑点像素从背景像素中分开来的值

分割模式(分割算法)

固定硬阈值

适用于图像有双峰值的情况,是一种图像分割的方法

如果像让左边也变成白色,需要调整阈值108 使用电子模式调整

根据我们的设置灰阶值进行图像的分割,分割成两部分,背景和目标

分析效果

对应测得尺寸

通过测得结果我们发现最大的面积是18万,最小是68.如果想要其中的某一部分就可以在测得尺寸中进行筛选

如:面积是1000-5000的范围的斑点

排除0或者包含1

添加属性

注意:选择的属性越多,工具运行的时间就会越长

测得尺寸相关参数

拓扑 : 辨别斑点、孔以及孔中的斑点

以上是基本操作,

问题:如何进行灰度值的设置 如何进行查找

恢复成默认值

形态学的操作

白色区域在变大

注意:无论是黑底白点还是白底黑点操作的都是白色

分割算法

Blob使用时通常分为分割分析两步。分割就是第一步,将Blob区域找出来

固定硬阈值:

硬阈值分割:

相对硬阈值:

固定阈值的问题:无论是硬阈值还是软阈值,在光照亮度线性变化时都会出现无法分割的情况

无法适应光线

上图说明:三幅图最明显的变化是由亮到暗,

第一张当灰度值比较暗的时候,目标是10,背景是90,以100为分割,就找不到图像

第二张: 目标是120,背景是160,以100为分割,能够准确分割

第三张:分割不到

中间的图变亮变暗,都导致无法分割

相对阈值就可以避免这种问题

相对,不是按照灰度值进行分割的,而是按照对应像素的灰度值的占比进行分割的

如上图:40% 不管上面的图像变得两或者暗,目标像素的个数站总像素的个数的比例是固定的

以40%来分割就可以进行分割

使用相对硬阈值对亮度变化的图像实现完美分割

当亮度发生变化的时候,曲线往左平移,40%对应的阈值也会变小   灰度值变化 30

当亮度发生变化的时候,曲线往右平移,40%对应的阈值也会变大 灰度值变化 140

动态硬阈值

动态硬阈值是根据输入图像的直方图来自动计算合适的阈值

阈值是通过最小化在阈值两边的像素的权重方差来计算的。有双峰分布的直方图

会出现很好的分割。如果不是双峰分布,可能就不能得到很好的分割

固定软阈值:

固定硬阈值

在目标和背景之间存在一个过渡的区域,过渡区域可以使用柔和度来设置权重,这也就是中间部分是属于目标还是背景,可以根据每个阶段的权重得到计算的结果

总结:硬阈值就是一刀切,根据阈值分成两部分

        软阈值就是分成三部分,除了目标和背景两部分,中间还有一个过渡区,对缓冲区域根据权重值进行计算,计算出是属于目标还是背景

连通性

一个blob就是由一组连通的像素组成。visionpro中对象使用8邻域,背景使用4邻域

左图:中间是目标   8邻域  上下左右 边贴边 斜对角 相接的都属于他的域

以8邻域来看是一个blob,以4邻域来看是8个blob

总结:

  1. 固定的阀值要比相对的速度快,因为与百分比对应灰度不必计算
  2. 固定阀值可以检测场景中是否有某特征,而相对阀值始终在场景中找到一个斑点

  1. Blob工具的基本操作方法

选择分割算法、设置分割阈值、设置分割区域、运行查看结果、

设置测量参数、再次运行查看筛选后参数

Blob工具的基本原理

根据图像像素灰度值大小、或者像素个数占比,将图像分割对象和背景两部分,再设置筛选条件,选出合适的目标

  1. lob工具的典型应用场景

适合:2D对象、高对比度(背景与对象对比明显)、无叠加、尺寸和形状不确定

豆类检测练习

要求:利用3个Blob工具分别统计视野内花生、红豆、黑豆的个数,并把个数count添加到终端。

  1. 选择三种类型都有的图片
  2. 添加工具,选择分段模式

每个图中三种豆类都不一样,所以首先排除相对阈值

动态阈值对于双峰值

  1. 选择硬阈值固定,手动选择
  2. 通过输出结果筛选

  1. 电子模式设置

CogHistogramTool  

用于对图像中某个区域的像素的灰度值进行测量

条码的基础知识

条码:条码是由一组按一定编码规则排列的条、空符号组成,用以表示一定的字符、数字及符号组成的信息

一维码

  • Code 128

  Code 128 是一种密度很高的字母数字代码系统,可对其进行双向扫描。此代码系统可编码整个 128 ASCII 字符集以及四个非数据字符。采用 Code 128 代码系统的符号使用 11 个黑色或白色模块编码每个字符,并且每个符号包含一个校验和字符。

  • UPC/EAN

  UPC 是一种固定长度的纯数字代码系统,可对其进行双向扫描。UPC 符号的大小可变以适应各种打印流程,但代码在符号的高度大于其宽度时效果最佳。欧洲公司使用大体相当的 European Article Numbering (EAN) 系统。

  • Code 39

  Code 39(也称为 USS Code 39 或 Code three of nine)是一种广泛使用的代码系统,专门针对非零售环境应用,可编码字母、数字以及“%”和“/”等特殊字符。使用 Code 39 代码系统的符号使用 5 个条码和 4 个空格(共计 9 个元素)来编码每个字符,并且 9 个元素中有 3 个始终为宽。此符号可包含用于进行错误检测的校验和字符。

  • Code 93

  Code 93 所解码的字符与 Code 39 相同,但每个字符使用 9 个条码元素,而非 15 个。

  • Codabar

  Codabar 是一种用于编码数字的较旧代码系统。

  • Pharmacode

  Pharmacode 在制药工业中用作包装控制系统。

  • PDF417

  PDF417 是堆叠的线性条码符号格式,主要用于包括运输、身份证和库存管理在内的多种应用。

  • EAN.UCC Composite

  启用此系统时,可解码复合代码(具有二维分量的一维代码)。可与 EAN.UCC 一起使用的一维代码包括 GS1 DataBar 和 Code 128。

  POSTNET

  • 邮政数字编码技术 (POSTNET) 条码由美国邮政局发明,用来编码 ZIP 代码信息。采用 POSTNET 代码系统的条码使用 5 个长短不同的条码组合来编码每个数字字符。POSTNET 条码可包含 5 位数 ZIP 代码、5 位数 ZIP + 4 代码或 11 位数交货地点代码。此符号始终包含校验和字符。
  • PLANET

  PLANET 条码是 POSTNET 条码的逆反版本,在 POSTNET 代码系统使用长条码的地方使用短条码,在 POSTNET 代码系统使用短条码的地方使用长条码。美国邮政局使用 PLANET 条码来跟踪邮件。一个 PLANET 条码最多可有 12 位。

  • 4-State Postal

  4-State 是由澳大利亚邮政局采用的字母数字代码系统。采用 4-State 代码系统的条码使用 4 个不同类的条码来编码每个字符,其中每个条码都有不同的名字和值。4-State 条码可采用以下三个不同结构中的一个来生成:37 个条码(标准)、52 个条码或 67 个条码。Barcode 工具支持 4-State 代码系统的 Australian、JapanPost、UPU 和 USPS 版本。

二维码

1.二维码定义:

  二维码(2-Dimensional Bar Code),是用某种特定的几何图形按一定规律在平面(二维方向上)分布的黑白相间的图形记录数据符号信息的。它是指在一维条码的基础上扩展出另一维具有可读性的条码,使用黑白矩形图案表示二进制数据,被设备扫描后可获取其中所包含的信息。一维条码的宽度记载着数据,而其长度没有记载数据。二维条码的长度、宽度均记载着数据。二维条码有一维条码没有的“定位点”和“容错机制”。容错机制在即使没有辨识到全部的条码、或是说条码有污损时,也可以正确地还原条码上的信息。

2.类别:

        二维条码的种类很多,不同的机构开发出的二维条码具有不同的结构以及编写、读取方法。常见的二维码有:PDF417码、QR码、汉信码、颜色条码、quick mark code、data matrix

3.定位标记

  二维条码通常有特定的定位标记(如QR码为三个大的定位点),通过定位标记使读码机正确辨识进行解读,所以二维条码不管是从何种方向读取都可以被辨识。

4.特性

二维条码比一维条码记载数据量更多。而且可以记载更复杂的数据,比如图片链接、网络链接等。

标记类型

标签码

要将代码应用到产品上,最经济实惠、最简单的方式就是使用预先印刷的标签、标牌和贴纸。然而,这并非总是最灵活的方式,因为必须预先确定代码上的数据。

直接元件标记

直接元件标记(DPM)是一种永久性标记生产元件的工艺,无需标或包装。DPM通常由汽车

航空航天和电子产品制造商使用,以确保在整个生命周期可靠地跟踪他们生产的元件。首选DPM代码是Data Matrix码和OR码。

典型的DPM方法包括:

激光

喷墨

打点

化学蚀刻

CogIDTool

能够在同一张图像中读取种类不同的一维码、多个同种类的二维码、以及一些高度旋转和有透视变形的码

识别条形码

添加图片

添加工具

读取到的信息

识别二维码

总结:

CogIDTool工具的功能原理

CogIDTool是VisionPro新增的一个非常重要的解码工具,能够在同一张图像中读取种类不同的一维码、多个同种类的二维码、以及一些高度旋转和有透视变形的码。与Barcode、2DSymbol、PDF417等读码工具相比,CogIDTool具有如下优点:

(1) 同时支持一维码和二维码的读取;

(2) 能够读取同一图像中种类不同的一维码;

(3) 支持最新的解码算法;

1) CogIDTool对一维码的支持

CogIDTool工具能够读取同一图像中的多个种类的1维码,在读取一维码的时候不需要训练。

2) CogIDTool对二维码的支持

CogIDTool工具能够定位和读2D Data Matrix码或QR Code码。CogIDTool工具同样能够读取图像中的多个二维码,但和读取一维码不同的是,这些二维码必须是同一种类。CogIDTool工具读取了图像中的多个QR码。

在使用CogIDTool工具的时候,你可以训练一些参数,例如:二维码的尺寸、二维码的编码种类、二维码的错误纠正方法等,以便能够重复成功读取二维码。如果你的应用中所有的二维码都具有相同的特征,推荐你对码事先进行训练;如果你的应用中,码的参数是变好的,此时你不需要训练参数,以确保CogIDTool在读码的时候能够包含所有的参数值。

3) CogIDTool工具对图像的要求CogIDTool工具读取一维码对图像有如下要求:

(1) 要读取的码的宽度要大于50个像素,码的每一个模块的宽度要少于50个像素;

(2) 对于一些非线性的码(码模块的宽度不同高度相同),每一个模块的宽度要大于1.6个像素,高度要大于50个像素。对邮政码(码模块的宽度相同高度不同),每一个模块的宽度要大于2.5个像素。

(3) 码的最小值静水带必须存在;

(4) 码模块和背景的对比度要大于32;

(5) 像素高度比不大于1.35:1;

二维码读取时对图像的要求比较低,一般来讲,需要在码四周的模块上周围有等宽度的静水带。

4) CogIDTool工具的解码算法

CogIDTool工具提供两种解码算法:

IDQuick:适用于快速读取一些质量较好的具有较高对比度的码。

IDMax:适用于读取一些图像质量不好的码。

CogIDTool工具默认采用IDMax算法。

5) CogIDTool工具的结果输出只有被正确解码的一维或二维码才会有结果输出,对于成功读取到的码,会输出以下结构:

(1) 会以弧度的度的方式输出读取到的码的方向;

(2) 会输出码的中心点的X、Y坐标;

(3) 会输出码的四个角点的X、Y坐标;

(4) 会以字符串的形式输出读取到的码;

(5) 国际标准化组织的代码和修饰符;

CogOCRMaxTool

CogOCRMaxTool是字符读取工具,能够根据已训练的字符样本读取灰度图像中的字符,并返回读取结果。

在使用COgOCRMaxtool工具读取字符的时候,需要设置字符区域,每个字符的最大最小宽度等参数。在字符读取之前需要首先进行字符分割和字符训练,下面分别进行介绍:

1) 字符分割:

字符分割的过程就是将字符像素从背景像素中分离出来,然后将这些分离后的字符像素分割成独立的符号,CogOCRMaxTool工具支持一套参数,这些参数指示如何把字符和背景以及字符和字符分割开,这些参数的设置需要考虑多种因素,如字符之间的距离、字符的种类、图像的质量等,通常情况下,默认的分割参数不能将字符充分分割。需要不断的尝试着修改分割参数,直到字符能够充分分割。

2) 字符分类

字符分类的过程就是为每一个分割的字符训练一个最佳匹配字符。新添加CogOCRMaxTool工具是没有训练字符的。可以从文件中调用已经存在的字符文件或临时添加字符集,添加字符集是一个不断重复的过程,需要添加所有需要读取的字符,只有在训练字符集中存在的字符才能够被成功读取。对于未训练的字符则不能成功读取。

应用场景

读取生产日期,生产中产品的序列号……

添加图像

参数介绍

点击提取线

添加预期文本

添加和调整

字体

加载和保存

把训练出来的字体库保存

可以点击添加字体库

区段

调整字体宽度

总结:

1. 多行字符进行OCR识别,需要添加多个OCR工具

2. 字符出现在视野中位置不确定时,需要选择合适的特征进行定位

3. OCR工具识别区域框有方向,保证训练方向和识别方向一致

4. OCR工具的字符库允许保存、加载

相关文章:

VisionPro斑点寻找工具Blob

斑点寻找工具Blob 斑点概述 斑点分析 探测并且分析图像中的二维形状Blob是先根据用户设定好的灰阶范围对图像进行分割,然后对目标进行查找和分析。斑点报告多种属性: 面积质心周长主轴…….. 应用场景 Blob分析非常适合以下场合的应用: 对…...

【Python】【面试凉经】Fastapi为什么Fast

核心的关键词:ASGI、原生异步、协程、uvloop、异步生态、Pydantic编译时生成校验代码、DI system预计算依赖树 interviewer 00:32:49 FastAPI 它优越于其他一些主流web框架像 django或 flask 的这个点在哪里? 我 00:33:00fastapi 就是说它的 fast 性能高…...

LocalDateTime类型的时间在前端页面不显示或者修改数据时因为LocalDateTime导致无法修改,解决方案

1.数据库中的时间数据,在控制台可以正常返回,在前端无法返回,即显示空白,如下图所示: 2.这种问题一般时由于数据库和我们实体类的名称不一致引起的,我们数据库一般采用_的方式命名,但是在Java中我们一般采用…...

【Linux】gcc从源码编译安装,修改源码,验证修改的源码

前阵子电脑使用的win10,win10过几天就让升级,烦得不行。 然后把操作系统切换到ubuntu24的样子,然后也是让升级,又烦的不行,然后切换到ubuntu server版本,感觉用起来要舒服些了,至少不会天天让升级。 回到标…...

牛客网NC22157:牛牛学数列2

牛客网NC22157:牛牛学数列2 📝 题目描述 🔍 输入输出说明 输入描述: 输入一个整数 N,范围在 0 到 1000 输出描述: 输出一个保留6位小数的浮点数 示例: 输入:2输出:1.500000 …...

智能手表集成测试报告(Integration Test Report)

📄 智能手表集成测试报告(Integration Test Report) 项目名称:Aurora Watch S1 测试阶段:系统集成测试 测试周期:2025年xx月xx日 – 2025年xx月xx日 报告编号:AW-S1-ITR-2025-001 版本&#xf…...

1C:ENTERPRISE 8.3 实用开发者指南-示例和标准技术(Session1-Session3)

1C:ENTERPRISE 8.3(1课-3课) 本博客是全网首个关于1C:Enterprice的中文指南,支持快速吸收使用 1C:Enterprise 8.3 软件开发和调整应用程序的技术 在这篇博客中我会基于实际应用示例,演示各种系统对象的结构、功能和用法。使用内…...

AgenticSeek开源的完全本地的 Manus AI。无需 API,享受一个自主代理,它可以思考、浏览 Web 和编码,只需支付电费。

​一、软件介绍 文末提供程序和源码下载 AgenticSeek开源的完全本地的 Manus AI。无需 API,享受一个自主代理,它可以思考、浏览 Web 和编码,只需支付电费。这款支持语音的 AI 助手是 Manus AI 的 100% 本地替代品 ,可自主浏览网页…...

Java类一文分解:JavaBean,工具类,测试类的深度剖析

解锁Java类的神秘面纱:从JavaBean到测试类的深度剖析 前言一、JavaBean 类:数据的守护者(一)JavaBean 类是什么(二)JavaBean 类的特征(三)JavaBean 类的使用场景(四&…...

2025认证杯数学建模第二阶段C题:化工厂生产流程的预测和控制,思路+模型+代码

2025认证杯数学建模第二阶段思路模型代码,详细内容见文末名片 一、探秘化工世界:问题背景大揭秘 在 2025 年 “认证杯”数学中国数学建模网络挑战赛第二阶段 C 题中,我们一头扎进了神秘又复杂的化工厂生产流程预测与控制领域。想象一下&…...

day 17 无监督学习之聚类算法

一、聚类流程 1. 利用聚类发现数据模式 无监督算法中的聚类,目的就是将数据点划分成不同的组或 “簇”,使得同一簇内的数据点相似度较高,而不同簇的数据点相似度较低,从而发现数据中隐藏的模式。 2. 对聚类后的类别特征进行可视…...

渗透测试流程-上篇

#作者:允砸儿 #日期:乙巳青蛇年 四月十八 本期就开始进入到网安的内容了笔者会和大家一起开始实操练习。在此之前笔者的老师和我说要知己知彼,胆大心细。笔者也把他的理念传出去,网安的知识比较复杂且使用的工具很多。笔者看过…...

Ubuntu离线安装Minio

MinIO 支持在 Linux 环境下离线安装,非常适合内网或无法联网的服务器环境。下面是详细的 Linux 离线安装 MinIO 服务端 的步骤: ✅ 一、准备工作 1. 创建安装目录(可选) mkdir -p /opt/minio cd /opt/minio2. 下载 MinIO 可执行…...

2025年山东省数学建模F题思路

2025年山东省数学建模F题思路 一、问题背景 在现代金融市场中,资产价格波动呈现出非线性、高噪声、强跨市场联动性等复杂动态特征。例如,2020年新冠疫情期间,美股数次熔断事件引发全球股市剧烈震荡;而2023年美元加息周期&#x…...

C++核心编程--3 函数提高

函数的一些高级用法。 3.1 函数形参默认值 C中&#xff0c;函数的形参可以有默认值&#xff0c;调用函数时&#xff0c;未进行赋值的形参会使用默认值 void func(int f_var1 10, int f_var2 20); // 声明 ​ void func(int f_var1, int f_var2) // 定义 {std::cout <&l…...

AI Agent开发第67课-彻底消除RAG知识库幻觉(1)-文档分块全技巧

开篇 在上篇《AI Agent开发第66课-彻底消除RAG知识库幻觉-带推理的RAG》放出后,网友们反响很大。有得告诉我:原来还有Rewrite这么一招?早知道这一招很多之前的一些遗留问题都能解决了。不过在上一篇结尾我已经提到了,要真正解决一个AI Agent在响应时产生的幻觉我们用提示语…...

c++多态面试题之(析构函数与虚函数)

有以下问题展开 析构函数要不要定义成虚函数&#xff1f;基类的析构函数要不要定义成虚函数&#xff1f;如果不定义会有什么问题&#xff0c;定义了在什么场景下起作用。 1. 基类析构函数何时必须定义为虚函数&#xff1f; 当且仅当通过基类指针&#xff08;或引用&#xff09;…...

buildroot使用外部编译链编译bluez蓝牙工具

buildroot使用外部编译链编译bluez蓝牙工具 主要参见这个csdn buildroot使用外部编译链编译bluez蓝牙工具_bluez编译-CSDN博客 设置交叉编译工具路径时&#xff0c;设置到bin目录之前 如果menuconfig不能改路径&#xff0c;就去 .config下去改 这样才能编译过...

自定义类型:结构体

1.结构体类型的声明 1.1.1结构的声明 struct tag {member-list; }variable-list; 描述一个学生&#xff1a;只包含了学生的名字、年龄、性别、学号 struct Stu {char name[20];//名字int age;//年龄char sex[5];//性别char id[20];//学号 }; 1.1.2 结构体变量的创建和初始…...

以项目的方式学QT开发C++(一)——超详细讲解(120000多字详细讲解,涵盖qt大量知识)逐步更新!

以项目的方式学QT开发 以项目的方式学QT开发 P1 QT介绍 1.1 QT简介 1.2 QT安装 1.2.1 Windows QT安装 1.2.2 QT Creator 使用基本介绍 P2 C基础 2.1 命名空间 2.1.1 命名空间作用 2.1.2 自定义命名空间 2.2 从C语言快速入门 2.2.1 输入输出 2.2.2 基…...

Spring框架的事务管理

引言 在企业级应用开发中&#xff0c;事务管理是一个至关重要的环节&#xff0c;它确保了数据的一致性和完整性。Spring 框架为我们提供了强大而灵活的事务管理功能&#xff0c;能够帮助开发者更轻松地处理复杂的事务场景。本文将深入探讨 Spring 框架的事务管理&#xff0c;包…...

TypeScript:类

一、基本概念 TypeScript 类是基于 ES6 类的语法扩展&#xff0c;增加了类型注解和访问修饰符等特性&#xff0c;提供了更强大的面向对象编程能力。 二、基本语法 class Person {name: string;age: number;constructor(name: string, age: number) {this.name name;this.ag…...

Python继承

在Python编程中&#xff0c;继承是一个让新手又爱又怕的概念。今天我们就来聊聊这个看似高深实则简单的特性&#xff0c;保证让你看完后能拍着胸脯说&#xff1a;“继承嘛&#xff0c;小菜一碟&#xff01;” 一、什么是继承&#xff1f; 想象一下你正在玩一个养成游戏。你创…...

浏览器宝塔访问不了给的面板地址

注意你们的端口&#xff0c;服务器的端口开放了没&#xff01;&#xff01;&#xff01;宝塔给的端口是否在范围之内&#xff01;&#xff01; 我的当时是1000/10000 &#xff08;阿里云服务器&#xff09; 但是宝塔给的是 4W多 对不上&#xff01;&#xff01; 更换安全组…...

强化学习入门:马尔科夫奖励过程

文章目录 前言1、组成部分2、应用例子3、马尔科夫奖励过程总结 前言 最近想开一个关于强化学习专栏&#xff0c;因为DeepSeek-R1很火&#xff0c;但本人对于LLM连门都没入。因此&#xff0c;只是记录一些类似的读书笔记&#xff0c;内容不深&#xff0c;大多数只是一些概念的东…...

RHCE实验:通过脚本判断用户是否存在

一、实验要求 1、 写一个脚本&#xff0c;使用函数完成 1 、函数能够接受一个参数&#xff0c;参数为用户名&#xff1b; 判断一个用户是否存在 如果存在&#xff0c; 就返回此用户的 shell 和 UID &#xff1b;并返回正常状态值&#xff1b; 如果不存在&#xff0c;就说此用…...

Windows软件插件-音视频捕获

下载本插件 音视频捕获就是获取电脑外接的话筒&#xff0c;摄像头&#xff0c;或线路输入的音频和视频。 本插件捕获电脑外接的音频和视频。最多可以同时获取4个视频源和4个音频源。插件可以在win32和MFC程序中使用。 使用方法 首先&#xff0c;加载本“捕获”DLL&#xff0c…...

每日算法 - 【Swift 算法】Two Sum 问题:从暴力解法到最优解法的演进

【Swift 算法】Two Sum 问题&#xff1a;从暴力解法到最优解法的演进 本文通过“Two Sum”问题&#xff0c;带你了解如何从最直观的暴力解法&#xff0c;逐步优化到高效的哈希表解法&#xff0c;并对两者进行对比&#xff0c;适合算法入门和面试准备。 &#x1f4a1; 问题描述 …...

2025年,如何制作并部署一个完整的个人博客网站

欢迎访问我的个人博客网站&#xff1a;欢迎来到Turnin的个人博客 github开源地址&#xff1a;https://github.com/Re-restart/my_website 前言 2024年年初&#xff0c;从dji实习回来之后&#xff0c;我一直想着拓宽自己的知识边界。在那里我发现虽然大家不用java&#xff0c;…...

深度学习框架---TensorFlow概览

一、TensorFlow 概述 1. 发展历程 1.x 版本&#xff1a;基于静态图&#xff08;Graph&#xff09;和会话&#xff08;Session&#xff09;&#xff0c;需预先定义计算图&#xff0c;调试较复杂。2.x 版本&#xff1a;默认启用动态图&#xff08;Eager Execution&#xff09;&…...

鸿蒙OSUniApp制作自定义的下拉菜单组件(鸿蒙系统适配版)#三方框架 #Uniapp

UniApp制作自定义的下拉菜单组件&#xff08;鸿蒙系统适配版&#xff09; 前言 在移动应用开发中&#xff0c;下拉菜单是一个常见且实用的交互组件&#xff0c;它能在有限的屏幕空间内展示更多的选项。虽然各种UI框架都提供了下拉菜单组件&#xff0c;但在一些特定场景下&…...

扣子(Coze)案例:工作流生成小红书心理学卡片

大家好&#xff01;我是 Robin。专注于 AI 技术探索与实践&#xff0c;持续分享 Coze 智能体、Coze 模板&#xff0c;以及 Coze 工作流搭建案例。 工作流智能体作用&#xff1a; 输入需要生成小红书心理学知识卡片的数量&#xff0c;工作流自动批量生成图文。 首先演示一下生…...

深度理解用于多智能体强化学习的单调价值函数分解QMIX算法:基于python从零实现

引言&#xff1a;合作式多智能体强化学习与功劳分配 在合作式多智能体强化学习&#xff08;MARL&#xff09;中&#xff0c;多个智能体携手合作&#xff0c;共同达成一个目标&#xff0c;通常会收到一个团队共享的奖励。在这种场景下&#xff0c;一个关键的挑战就是功劳分配&a…...

C语言经典笔试题目分析(持续更新)

1. 描述下面代码中两个static 各自的含义 static void func (void) {static unsigned int i; }static void func(void) 中的 static 作用对象&#xff1a;函数 func。 含义&#xff1a; 限制函数的作用域&#xff08;链接属性&#xff09;&#xff0c;使其仅在当前源文件&…...

射击游戏demo11

完善地图&#xff0c;加载出装饰品&#xff0c;检测人员与地面的碰撞&#xff0c;检测子弹与岩壁的碰撞&#xff0c;检测手雷与地面的碰撞。 import pygame import sys import os import random import csv # 初始化Pygame pygame.init()# 屏幕宽度 SCREEN_WIDTH 1200 # 屏幕高…...

多智能体Multi-Agent应用实战与原理分析

一:Agent 与传统工具调用的对比 在当今的开发环境中,Agent 的出现极大地简化了工作流程。其底层主要基于提示词、模型和工具。用户只需向 Agent 输入需求,Agent 便会自动分析需求,并利用工具获取最终答案。而传统方式下,若没有 Agent,我们则需要手动编码来执行工具,还要…...

专项智能练习(定义判断)_DA_01

1. 单选题 热传导是介质内无宏观运动时的传热现象&#xff0c;其在固体、液体和气体中均可发生。但严格而言&#xff0c;只有在固体中才是纯粹的热传导&#xff0c;在流体&#xff08;泛指液体和气体&#xff09;中又是另外一种情况&#xff0c;流体即使处于静止状态&#xff0…...

关于NLP自然语言处理的简单总结

参考&#xff1a; 什么是自然语言处理&#xff1f;看这篇文章就够了&#xff01; - 知乎 (zhihu.com) 所谓自然语言理解&#xff0c;就是研究如何让机器能够理解我们人类的语言并给出一些回应。 自然语言处理&#xff08;Natural Language Processing&#xff0c;NLP&#xff0…...

SLAM定位与地图构建

SLAM介绍 SLAM全称Simultaneous Localization And Mapping&#xff0c;中文名称同时定位与地图构建。旨在让移动设备在未知环境中同时完成以下两个任务&#xff08;定位需要地图&#xff0c;而建图又依赖定位信息&#xff0c;两者互为依赖&#xff09;&#xff1a; 定位&#…...

REST架构风格介绍

一.REST&#xff08;表述性状态转移&#xff09; 1.定义 REST&#xff08;Representational State Transfer&#xff09;是由 Roy Fielding 在 2000 年提出的一种软件架构风格&#xff0c;用于设计网络应用的通信模式。它基于 HTTP 协议&#xff0c;强调通过统一的接口&#…...

前端流行框架Vue3教程:16. 组件事件配合`v-model`使用

组件事件配合v-model使用 如果是用户输入&#xff0c;我们希望在获取数据的同时发送数据配合v-model 来使用&#xff0c;帮助理解组件间的通信和数据绑定。 &#x1f9e9; 第一步&#xff1a;创建子组件&#xff08;SearchComponent.vue&#xff09; 这个组件用于处理用户的搜…...

5月15日day26打卡

函数专题1 知识点回顾&#xff1a; 函数的定义变量作用域&#xff1a;局部变量和全局变量函数的参数类型&#xff1a;位置参数、默认参数、不定参数传递参数的手段&#xff1a;关键词参数传递参数的顺序&#xff1a;同时出现三种参数类型时 作业&#xff1a; 题目1&#xff1a;…...

Java中的深拷贝与浅拷贝

什么是拷贝 在Java中&#xff0c;拷贝是指创建一个对象的副本。拷贝主要分为两种类型&#xff1a;浅拷贝(Shallow Copy)和深拷贝(Deep Copy)。理解这两种拷贝的区别对于编写正确的Java程序非常重要&#xff0c;特别是在处理对象引用时。 浅拷贝(Shallow Copy) 浅拷贝是指创建…...

springboot AOP中,通过解析SpEL 表达式动态获取参数值

切面注解 import com.bn.document.constants.FmDeptCatalogueConstants;import java.lang.annotation.*;Target(ElementType.METHOD) Retention(RetentionPolicy.RUNTIME) public interface FmDeptCatalogueAopAnnotation {/*** 权限类型*/FmDeptCatalogueConstants value();/…...

【论信息系统项目的合同管理】

论信息系统项目的合同管理 论文要求写作要点正文前言一、合同的签订管理二、合同履行管理三、合同变更管理四、合同档案管理五、合同违约索赔管理结语 论文要求 项目合同管理通过对项目合同的全生命周期进行管理&#xff0c;来回避和减轻可识别的项目风险。 请以“论信息系统项…...

redis持久化方式

一、RDB redis database&#xff1a;快照&#xff0c;某一时刻将内存中的数据&#xff0c;写入磁盘中生成1个dump.rdb文件RDB的触发方式&#xff1a; 手动触发&#xff1a;save&#xff08;阻塞主进程&#xff0c;阻塞其它指令&#xff0c;保证数据一致性&#xff09;、bgsave…...

free void* 指令

https://stackoverflow.com/questions/2182103/is-it-ok-to-free-void free(ptr) 仅释放指针指向的内存&#xff0c;不会修改指针变量本身的值。调用后&#xff0c;ptr 仍然指向原来的地址&#xff08;称为 "悬空指针"&#xff09;&#xff0c;但该地址对应的内存已…...

ADS1220高精度ADC(TI)——应用 源码

文章目录 德州仪器ADS1220概述资料引脚&封装布线寄存器配置寄存器0&#xff08;00h&#xff09;配置寄存器1&#xff08;01h&#xff09;配置寄存器2&#xff08;02h&#xff09;配置寄存器3&#xff08;03h&#xff09; 连续转换流程驱动源码ads1220.cads1220.h 德州仪器A…...

mysql-Java手写分布式事物提交流程

准备 innodb存储引擎开启支持分布式事务 set global innodb_support_axon分布式的流程 详细流程&#xff1a; XA START ‘a’; 作用&#xff1a;开始一个新的XA事务&#xff0c;并分配一个唯一的事务ID ‘a’。 说明&#xff1a;在这个命令之后&#xff0c;所有后续的SQL操…...

红黑树:数据世界的平衡守护者

在 C 算法的神秘森林里&#xff0c;红黑树是一棵充满智慧的 “魔法树”。它既不像普通二叉搜索树那样容易失衡&#xff0c;也不像 AVL 树对平衡要求那么苛刻。作为 C 算法小白&#xff0c;今天就和大家一起深入探索红黑树的奥秘&#xff0c;看看它是如何成为数据世界的平衡守护…...