树莓派编程基础与硬件控制

1.编程语言

Python 是一种泛用型的编程语言,可以用于大量场景的程序开发中。根据基于谷歌搜
索指数的 PYPL(程序语言流行指数)统计,Python 是 2019 年 2 月全球范围内最为流行
的编程语言
           相比传统的 C、Java 等编程语言,Python 具备一些优势。
(1)较强的易读性。Python 是一种高级编程语言,其在设计上更为接近人类使用的
自然语言(英语)。具备英语基础和少许编程基础的人可以很轻松地阅读 Python 代码。
(2)简洁的语法(规则)。Python 语言的设计哲学是“优雅”“明确”和“简单”,
力图用最简洁的方式完成程序内容。相比于传统编程语言,Python 通常可以用更短的语句
执行同样的功能。
(3)强大的可扩展性。由于 Python 是一个完全开放的编程语言环境,其拥有大量强
大的扩展包,例如数学计算包 NumPy、游戏开发包 pygame、机器学习包 TensorFlow 等。
正是因为这一特点,Python 目前是人工智能编程的首选语言。
(4)便利的可移植性。Python 几乎可以运行于任何操作系统,将 Python 代码移植
到 Windows、macOS、Linux 等不同环境中非常便利。
交互式编程是一种非常便利的 Python 编程方式,常用于程序测试的场景。首先通过任
务栏打开树莓派的“终端”,在其中输入“python3”并回车即可进入 Python 3 的交互式
编程环境
用 Geany 编辑器编写 Python 程序
虽然交互式编程环境可以很方便地输出语句的结果,但它并不能将大段的程序内容存
储起来反复运行,因此只适用于程序测试的场景。绝大多数情形下,我们需要将完整的
Python 程序存储为 .py 格式的文件,再调用它进行运行。
可以使用任意的文本编辑器编写 Python 程序。我们在后续的课程中统一使用树莓派系
统预装的轻量级文本编辑器 Geany 来编写 Python 程序。Geany 可在树莓派任务栏的开
始菜单中选择“编程”找到。
            使用 Geany 编辑器的图标可以方便地进行文件的新建、打开、保存以及 Python 程序
的运行操作
              打开 Geany 后,我们先新建一个空白文档,再单击文档→设置文件类型→脚本语
言→ Python 源文件,将其设为 Python 程序文件

2.树莓派的 GPIO 接口

 

树莓派 3B+ 主控板可以通过上面的 40 个引脚连接电子设备输入或输出电信号。

  3. 点亮一盏小灯 

导入 Python 扩展包

要使用 Python 程序对 GPIO 连接的输入 / 输出设备进行控制,需要用到一个名为
RPi.GPIO 的扩展包。在 Python 程序中,许多功能被写在了一些额外的官方或第三方扩展
包中,可以通过如下两种方式导入扩展包。
第一种方式为直接导入,后面的“as 自定义名称”可以不写。不写时,使用“扩展包
名 . 包内的函数或变量名”的形式可以调用包内预先设定好的函数或变量。若设定了自定义
名称,则使用“自定义名称 . 包内的函数或变量名”的形式调用。
第二种导入方式则可以选择性导入包中设定的函数或变量,导入多个函数或变量时需使
用逗号隔开。若使用“import *”则可导入包中的所有函数及变量。用这种方式导入扩展包时,
我们可以直接用导入的函数或变量名来调用它们而不用再写包名。
中除了 1~40 的编号外,每个 GPIO 引脚后面还有另一个编号。在 Python
程序中使用 GPIO 时,需要指定程序应该使用哪一种编号方式。其设定方法是:
树莓派的所有 GPIO 口既可以连接输入设备,也可以连接输出设备,因此需要事先设
定其为输入模式还是输出模式:
模式有两种:gpio.IN 代表这是一个输入设备,gpio.OUT 代表这是一个输出设备。
例如,对 LED 连接的 GPIO 接口进行设定的完整程序如下: 设定 GPIO 接口输出高、低电平的语句为:
电平状态只有两种:gpio.HIGH 代表高电平,gpio.LOW 代表低电平。
为了让程序能控制小灯亮灭一段时间,需要引入 Python 中
time 扩展包的 sleep 函数。 sleep 后的参数表示需等待的时间,单位为秒。

4.用按钮控制灯的状态 

与 LED 模块类似,我们也要先设定按钮连接的 GPIO 接口的输入 / 输出状态。 我们可以通过一个简单的函数来读取接口的电平状态:
这个函数可能得到两个返回值:gpio.HIGH(高电平)或 gpio.LOW(低电平)。我
们可以通过判断按钮的电平状态来执行不同的操作。例如,在按钮被按下时将小灯点亮,否
则将小灯熄灭。
但是这个程序并不能真正实现预想的功能,因为这段程序仅仅在程序刚刚运行的一瞬间
进行按钮按压状态的读取与判断。若要实现持续判断的功能,需要增加一个 while 循环结构。

4.1两个按钮的控制与逻辑运算符 

将这个逻辑转化为程序:

但这样编写的程序看上去有一点复杂。在需要同时判断多个条件的真假时,我们可以通
过逻辑运算符来处理它们的关系。
逻辑运算符有 and(与)、or(或)、not(非)三种。
与运算符 and:用 and 连接两个条件,当两个条件都为真时,返回真;有一个为假时,
返回假。等同于我们常说的“并且”。
或运算符 or:用 or连接两个条件,当两个条件有一个为真时,返回真;都为假时,返回假。
等同于我们常说的“或者”。
非运算符 not:在条件前加上 not,可以得到与条件真假相反的结果。等同于对条件加
上了“不”字。
上面程序的功能实质上是:按钮 1 被按下并且按钮 2 被按下时点亮小灯,否则熄灭小灯。
所以可以利用逻辑运算符编写以下程序。

4.2抢答器的完整示例程序 

 5.机器视觉与图像识别

人工智能系统的一个重要发展方向是对人类机能的模拟,因而学会“看”对人工智能而
言是非常关键的一步。
在分析机器如何“看”之前,我们先简单了解一下人类的视觉机制。我们天生就能使用
眼睛接收光线,从而可以看到五彩斑斓的世界,这是因为人眼的视觉细胞中存在分别对红色、
绿色、蓝色敏感的 3 种细胞,从而可以识别出这 3 种颜色,并可以通过它们的融合识别其
他颜色。
因此,红、绿、蓝 3 种颜色被称为视觉三原色,它们的任意组合可以构成可见光的所
有颜色。
人工智能视觉的关键就在于如何从图像中分析出各种物体的颜色、形状等基本信息,进
而分析它们所蕴含的意义。这个过程就被称为图像识别,或者机器视觉。

6.机器视觉技术的常见应用 

1.相似图像搜索

2009—2010 年,谷歌、百度等搜索公司相继推出了以图搜图的图片搜索功能。这一
功能可以分析图片上的特征信息,并从互联网上找到与该图片相似的图片。现在,各类手机
购物 App 也可以以类似的原理实现拍摄商品照片,找到相似商品的功能。
2.文字识别
很多电子设备都可以使用 OCR(光学字符识别)技术识别纸质资料上的文字,目前较
为成熟的 OCR 技术可以以较高的成功率读取手写文字。
3.面部识别
当前的智能手机上大多搭载了利用手机摄像头结合人工智能算法实现的面部识别功能。
结合这一功能,智能手机可以以较高的安全性进行解锁、支付等操作。 除此以外,面部识别还被广泛应用于公共安全领域,不单可以在特定场所保护公共安全, 还可以帮助侦破刑事案件。
4.目标检测
人工智能图像识别的一个关键是识别图像中的物体并对它们进行分类。现在,随着人工
神经网络技术的发展,我们可以更轻松地使用一些开源的神经网络工具“训练”AI 识别物体。
图 5.8 所示为目标检测工具识别指定种类的物体。

7.认识 OpenCV 

通过前面的学习,我们知道,计算机等电子设备中存储的图像信息实质上是以像素排列
的颜色值信息,也就是大量的数据。要从图像信息中得到有意义的信息,就必须对这些数据
进行分析与处理。
计算机科学家和相关领域的从业者在过往几十年时间内发展出了大量用于处理计算机图
像信息的数学方法。开源的计算机视觉库 OpenCV 内置了大量这类数学方法,可以帮助我
们分析图像信息。

7.1OpenCV 简介

英特尔公司于 1999 年发起了一个以计算机图像处理为主题的开源程序库项目OpenCV(开源计算机视觉库),它已成为目前影响力最大 的一个开源计算机视觉库。OpenCV 在面部识别、手势识别、 目标识别、增强现实(AR)等问题上都能发挥重要的作用。 2009 年,OpenCV 发布了其第一个第二代正式版本。 自 2012 年起,一个专门的非营利组织负责 OpenCV 项目 的后续支持。OpenCV 2015 年发布其第三代,2018 年发 布到第四代。在我们后续的项目中,将使用目前应用最为广 泛的 OpenCV 第三代版本。 OpenCV 本体以 C++ 程序语言编写,但也提供了包括 Python 在内的其他编程语言的扩展接口。

视频的帧与分辨率 

OpenCV 不单可以用于处理静态的图像信息,其很重要的一个目标是对实时的动态图
像进行处理。
我们可以运用摄像头来捕获动态的视频图像。摄像头的基本成像原理与数码相机完全相
同,只不过它可以实时以较短的时间间隔连续获取图像信息。这些图像信息按时间顺序排列
起来就组成了我们常说的视频。
我们看到的视频实际上都是由若干张静态图片连续播放而成的。人类大
脑的视觉系统会将连续播放的相似图片自动连接成连贯的影像。
视频中每一张静态图片被称为视频的一帧(frame)。视频每秒输出的帧数量是一个很
重要的指标,这被称为帧率(单位为帧 / 秒)。现在主流的视频帧率是 30 帧 / 秒或 60 帧 / 秒。 帧率越高,视频越流畅。
一个视频中每一帧图像的像素排列是完全一致的。视频中每帧图片的横轴、纵轴像素的
数量被称为视频的分辨率。以树莓派官方摄像头为例,该摄像头拍摄的图像横轴拥有 640
个像素,而纵轴拥有 480 个像素,所以其分辨率为 640 像素 ×480 像素。
橙色点所示,我们可以将每个像素定位到其在 x 轴(横轴)和 y 轴(纵轴)
方向的位置,并标注为 ( x 坐标, y 坐标 )。
视频的分辨率常以纵轴的像素数量来表示,例如标清视频为 480p,指的是纵轴有 480
个像素。而高清视频为 720p,全高清视频为 1080p,4K 视频则为 2160p。标准视频的横
纵像素比通常为 16 :9或4 :3。显然,分辨率越高,视频越清晰。

7.2opencv安装:

欲哭无泪555555555555555555,走了一天弯路,晕

结果在终端窗口输入sudo apt-get install -y libopencv-dev python3-opencv

sudo pip3 install numpy

输入python3验证

再import cv2没有报错就ok了

 7.21用树莓派摄像头调取图像

使用 OpenCV 测试摄像头的完整程序如下。

运行程序后将在弹出的窗口中看到其拍摄到的实时画面。如果未能看到画面,请检查摄
像头的连接。
现在我们来分析一下这段程序代码的运作过程。OpenCV 可以使用 VideoCapture 读
取视频。其后的括号中填写序号“0”将可以读取树莓派的默认摄像头信号。如果连接了其
他摄像头,可以用其他序号来获取。此外,在这里填写视频存储地址,也可以直接读取树莓
派系统中存储的视频。
将读取视频的结果创建为 cap 后,使用 isOpened 函数可以返回其读取视频的结果。
如果读取成功,则返回 True(真),否则返回 False(假)。因此,我们可以将它作为
while 循环的条件实现循环读取视频信号。
对 cap 使用 read 函数将返回视频中一帧的信息,这个函数存在两个返回值:该帧是否
存在以及这一帧的具体信息。我们可以用形如 (ret, frame) = cap.read() 的格式将第一个返
回值存为 ret,第二个返回值存为 frame。
ret 在帧存在时为 True(真),否则为 False(假)。frame 则包含了这一帧中所有像
素点的三原色值信息及其排列方式。OpenCV 读取的帧信息的每一个像素由三原色值按照
B(蓝)、G(绿)、R(红)的顺序排列,每一个值的范围为 0(最暗)~255(最亮)。
使用 imshow 函数可以将图像信息显示为一个窗口中的图像,其格式为:
OpenCV 中使用 imshow 显示图像后必须使用一个 waitKey 函数。函数的参数值为以

毫秒为单位的时间,表示在显示一帧后等待这些时间再继续。

 8.用 OpenCV 识别颜色

使用 OpenCV 调取图像的信息只是我们分析图像的第一步,OpenCV 的强大之处在
于它可以通过一些预置函来方便地处理这些信息。机器视觉技术识别物体首先需要确定物体
的位置,勾勒出其轮廓,而区分物体与背景的关键在于颜色的分界。

8.1HSV 颜色空间

OpenCV 读取的图像信息在每一像素上都由 B、G、R 的颜色值排列而成,但事实上
用这 3 个颜色值来区分颜色并不像想象中那么简单:同一物体的三原色值在环境光照变化
的情况下将发生很大的变化,使用一定的颜色区间来锁定特定物体几乎是不可能完成的任务。
为了解决这一问题,我们可以使用另一种描述颜色的方式:HSV 颜色空间
相比直接用三原色值来表述颜色,使用颜色的另外一些属性来描述它们更符合人眼对颜
色的认知。这些属性包括颜色的色相(Hue)、饱和度(Saturation)、亮度(Value)
使用这 3 种颜色属性描绘颜色的方法于 1978 年由计算机科学家 Alvy Ray Smith 提出,这
些值可以用三原色值经过简单的数学转换得到。
色相(H)是颜色的基本属性。我们可以将三原色红、绿、蓝置于一个圆盘的 0°、
120°和 240°位置,然后将其他颜色插入排列。
饱和度(S)代表颜色的纯度或“鲜艳程度”。颜色的饱和度越高,则色彩越“纯正”。
亮度(V)代表颜色的明亮程度。亮度越大则颜色越亮,否则越暗。
图 5.13 所示为 HSV 颜色空间的图示,这种描绘颜色的方式相对三原色更接近人的视
觉感受,H、S、V 三种颜色值的变化可以被人眼敏锐地感觉到。通常,色相(H)的取值
范围为 0~360,而饱和度(S)与亮度(V)被划为 100 份,取值范围为 0~100。
在 Geany 中,我们可以单击运行键右侧的按键打开颜色选择器,从这里可以获取不同
颜色的 HSV 值与 RGB 值
OpenCV 中有一个内置函数 cvtColor 可以方便地将图像信息从一个颜色空间转换到另
一个颜色空间,例如:
hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)
这一语句可以将原本 BGR 颜色空间上的 frame 信息转换为 HSV 颜色空间并存储到
hsv 中。需要注意的是,OpenCV 中 H 值的取值范围是 0~180,S 和 V 值则是 0~255。
若将通常的 HSV 值代入 OpenCV 中分析,须先对 H、S、V 分别按比例转换。

 

我们常见的颜色都处于 HSV 颜色空间的某个范围内。图 5.15 所示为一些颜色的大致
范围(按照 OpenCV 的取值范围)。

9.图像的二值化

在 HSV 颜色空间中,我们可以设定出待检测物体颜色所在的区间。假定待检测物
体是一个较均匀的黄色物体,其颜色值的范围为:H 值 26~34,S 值 43~255,V 值
46~255。我们可以将这个范围设定一个下限和上限并分别定义: 这种定义方式事实上是建立了元组类型的变量
接下来为了勾勒出这个物体的轮廓,需要先将图像中属于这个区间的像素与不属于这
个区间的像素进行分割。为了方便,我们可以将属于这个区间的像素直接取值为 1,而将
不属于这个区间的像素取值为 0,这样就构成了一个只由 0 和 1 排列的图像信息。使用
OpenCV 中的 inRange 函数可以轻松地完成这一步骤:
函数返回一个 0 和 1 排列而成的图像信息。这种将图像的所有像素用 0 和 1 表示的方
法被称为图像的二值化。二值化是处理计算机图像时常用的一种数学方法。若将值为 0 的
像素用黑色标出,而将 1 用白色标出,inRange 函数可以完成图 5.16 所示的转换。

 9.1找到轮廓的位置

 

接下来我们可以通过二值化图像方便地找出黑、白区域分界线的位置,即待检测物体的
轮廓。寻找二值化图像轮廓可以用 findContours 函数来实现:
这里,我们传入的第一个参数“图像信息”是二值化的图像信息。
第二个参数“输出模式”指定输出轮廓的类型,主要有以下 3 种类型。
cv2.RETR_EXTERNAL:只输出外轮廓。
cv2.RETR_LIST:输出所有轮廓。
cv2.RETR_TREE:输出所有轮廓,并输出轮廓间的包含关系。
第三个参数“输出方法”指的则是输出的轮廓信息所包含的内容,主要有以下两种输出
方法。
cv2.CHAIN_APPROX_SIMPLE:只输出拐角点的坐标。
cv2.CHAIN_APPROX_NONE:输出所有连续点的坐标

 

在 本 例 中, 为 简 便 起 见, 我 们 采 用 cv2.RETR_EXTERNAL 与 cv2.CHAIN_
APPROX_SIMPLE 两个参数。函数一共存在 3 个连续的返回值:传入的图像信息本身
轮廓坐标的信息各个轮廓之间的包含关系。在指定只输出外轮廓的情况下,我们实际上只需要用到其第二个返回值。
  •  将图像进行二值化并寻找外轮廓的完整代码如下

 我们首先将图像按照设定的颜色区间转换为二值化图像信息,并用

mask 变量存储 。然后,我们寻找图像中的轮廓,并用 cnts 变量存储找到的全部轮廓信息。但是,这样找到的轮廓包含了图像中所有处于该颜色区间中的物体轮廓, 例如图 5.16 右侧 的一些噪点也会被检测出来。为了只输出待检测物体的轮廓,我们需要找到所有轮廓中面积 最大的一个
Python 中存在一个 max 函数,它可以输出一组数据中最大的一个。在本例中,我们
需要输出的数据并非绝对数值最大,而是 包围面积最大 。这种情况下,在 max 函数中设定
比较方式即可实现:
找最大面积的比较方式在 OpenCV 中被设定为 contourArea,我们可以用下面的语句
将 cnts 中面积最大的轮廓存储在变量 c 中:
最后,我们需要从 c 中得到这个轮廓的 具体位置 。使用 minEnclosingCircle 函数可以
得到一个轮廓的最小包围圆(指能包围这个轮廓的最小的圆)的圆心坐标和半径。
minEnclosingCircle 函数只有一个参数:轮廓信息。而函数将连续返回两组值:圆心
的坐标(横坐标,纵坐标)、圆的半径。
使用 ((x, y), radius) = cv2.minEnclosingCircle(c) 将可以直接存储这些信息。我们用
变量 x 存储横坐标,变量 y 存储纵坐标,变量 radius 则存储圆的半径。
不过,如果摄像头没有捕捉到任何指定颜色的物体,cnts 将是完全“空”的,这将导
致 max 函数报错。我们可以加入下列判断。
这里 len 可以表示一组数据的“长度”。若 len 大于 0,表示其不为“空”。
len 函数的对象事实上是列表类型

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Linux】Linux下的基本指令

Linux下的基本指令 Linux 的操作特点:纯命令行ls 指令文件 pwd命令Linux的目录结构绝对路径 / 相对路径,我该怎么选择? cd指令touch指令mkdir指令(重要)rmdir指令rm 指令(重要)man指令&#xff…

静态时序分析:建立时间分析

静态时序分析https://blog.csdn.net/weixin_45791458/category_12567571.html?spm1001.2014.3001.5482 在静态时序分析中,建立时间检查约束了触发器时钟引脚(时钟路径)和输入数据引脚(数据路径)之间的时序关系&#x…

HSM加密机原理:密钥管理和加密操作从软件层面转移到物理设备中 DUKPT 安全行业基础8

HSM加密机原理 硬件安全模块(HSM)是一种物理设备,设计用于安全地管理、处理和存储加密密钥和数字证书。HSM广泛应用于需要高安全性的场景,如金融服务、数据保护、企业安全以及政府和军事领域。HSM提供了一种比软件存储密钥更安全…

【前端高频面试题--Vue基础篇】

🚀 作者 :“码上有前” 🚀 文章简介 :前端高频面试题 🚀 欢迎小伙伴们 点赞👍、收藏⭐、留言💬前端高频面试题--Vue基础篇 Vue基本原理双向绑定与MVVM模型Vue的优点计算属性与监听属性计算属性监…

QGIS Desktop工具转换png文件为TIF文件

https://qgis.org/ QGIS Desktop 3.34.3 菜单 Layer -> Georeferencer 选择 文件 点击 加载的图片的左上角的点 弹窗中没有数据 录入 0 0 再加入右侧下面的点 调整下 数据 点击 绿色的箭头按钮 输出TIF文件 GeoServer中添加 存储仓库 点击 GeoTIFF 录入,选…

51单片机编程应用(C语言):篮球比赛计分器

设计思路 1.LCD1602显示A 000:B 000 右下角显示24的数字,显示一节时间12:00. 2.规定矩阵键盘每一位表示的含义 s1按下,A队加一分 s2按下,A队加两分 s3按下,A队加三分 s4按下,A队减一分 如…

搜索二维矩阵[中等]

一、题目 给你一个满足下述两条属性的m x n整数矩阵: 【1】每行中的整数从左到右按非严格递增顺序排列。 【2】每行的第一个整数大于前一行的最后一个整数。 给你一个整数target,如果target在矩阵中,返回true;否则,返…

猫头虎分享已解决Bug || 日志文件过大(Log File Oversize):LogFileOverflow, ExcessiveLoggingError

博主猫头虎的技术世界 🌟 欢迎来到猫头虎的博客 — 探索技术的无限可能! 专栏链接: 🔗 精选专栏: 《面试题大全》 — 面试准备的宝典!《IDEA开发秘籍》 — 提升你的IDEA技能!《100天精通鸿蒙》 …

数据分析基础之《pandas(6)—高级处理》

一、缺失值处理 1、如何处理nan 两种思路: (1)如果样本量很大,可以删除含有缺失值的样本 (2)如果要珍惜每一个样本,可以替换/插补(计算平均值或中位数) 2、判断数据是否…

springboot178智能学习平台系统

简介 【毕设源码推荐 javaweb 项目】基于springbootvue 的 适用于计算机类毕业设计,课程设计参考与学习用途。仅供学习参考, 不得用于商业或者非法用途,否则,一切后果请用户自负。 看运行截图看 第五章 第四章 获取资料方式 **项…

【Make编译控制 06】CMake初步使用

目录 一、概述与安装 二、编译源文件 三、无关文件管理 一、概述与安装 CMake是一个跨平台的项目构建工具,相比于Makefile,CMake更加高级,因为CMake代码在执行的时候是会先翻译生成Makefile文件,再调用Makefile文件完成项目构…

【Linux】学习-基础IO—上

Linux基础IO—上 复习c语言接口 你真的懂文件吗? 文件的打开与关闭 深入了解文件读与写(C语言级别) 系统文件I/O 我们知道,文件是放在磁盘(硬件)上的,我们用代码访问文件的思路是: 写代码 -> 编译 -> 生成可执行exe …

fast.ai 机器学习笔记(三)

机器学习 1:第 8 课 原文:medium.com/hiromi_suenaga/machine-learning-1-lesson-8-fa1a87064a53 译者:飞龙 协议:CC BY-NC-SA 4.0 来自机器学习课程的个人笔记。随着我继续复习课程以“真正”理解它,这些笔记将继续更…

【北邮鲁鹏老师计算机视觉课程笔记】03 edge 边缘检测

【北邮鲁鹏老师计算机视觉课程笔记】03 1 边缘检测 有几种边缘? ①实体上的边缘 ②深度上的边缘 ③符号的边缘 ④阴影产生的边缘 不同任务关注的边缘不一样 2 边缘的性质 边缘在信号突变的地方 在数学上如何寻找信号突变的地方?导数 用近似的方法 可以…

linux 08 文件查找

02. 第一. alias 第二. locate: locate 找不到最近的文件 更新locate 后

【深度学习每日小知识】卷积神经网络(CNN)

在深度学习领域,卷积神经网络(CNN)彻底改变了视觉分析领域。凭借从图像中提取复杂模式和特征的能力,CNN 已成为图像分类、目标检测和面部识别等任务不可或缺的一部分。本文全面概述了 CNN,探讨了其架构、训练过程、应用…

Elasticsearch:混合搜索是 GenAI 应用的未来

在这个竞争激烈的人工智能时代,自动化和数据为王。 从庞大的存储库中有效地自动化搜索和检索信息的过程的能力变得至关重要。 随着技术的进步,信息检索方法也在不断进步,从而导致了各种搜索机制的发展。 随着生成式人工智能模型成为吸引力的中…

陪护系统|陪护小程序提升长者护理服务质量的关键

在如今逐渐老龄化的社会中,老年人对更好的护理服务需求不断增加。科技的进步使得陪护小程序系统源码成为提供优质服务的重要途径之一。本文将从运营角度探讨如何优化陪护小程序系统源码,提升长者护理服务的质量。 首先,我们需要对软件的设计和…

MOMENTUM: 1

攻击机 192.168.223.128 目标机 192.168.223.146 主机发现 nmap -sP 192.168.223.0/24 端口扫描 nmap -sV -p- -A 192.168.223.146 开启了22 80端口 看一下web界面 随便打开看看 发现这里有个参数id,sql尝试无果,发现写入什么,网页显示…

MySQL篇----第十七篇

系列文章目录 文章目录 系列文章目录前言一、对于关系型数据库而言,索引是相当重要的概念,请回答有关索引的几个问题二、解释 MySQL 外连接、内连接与自连接的区别三、Myql 中的事务回滚机制概述前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分…