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

【OpenCV实战】基于 OpenCV 的多尺度与模板匹配目标跟踪设计与实现

在这里插入图片描述

文章目录

  • 基于 OpenCV 的模板匹配目标跟踪设计与实现
  • 1. 摘要
  • 2. 系统概述
  • 3. 系统原理
    • 3.1 模板匹配的基本原理
    • 3.2 多尺度匹配
  • 4. 逻辑流程
    • 4.1 系统初始化
    • 4.2 主循环
    • 4.3 逻辑流程图
  • 5. 关键代码解析
    • 5.1 鼠标回调函数
    • 5.2 多尺度模板匹配
  • 6. 系统优势与不足
    • 6.1 优势
    • 6.2 不足
  • 7. 总结
  • 相关资料

基于 OpenCV 的模板匹配目标跟踪设计与实现

1. 摘要

来了来了还是我们可爱的鸡哥
本文介绍了一种基于 OpenCV 的视频目标跟踪,该利用模板匹配技术和多尺度匹配算法,实现对视频中目标的实时跟踪。通过结合鼠标的交互操作和暂停功能,用户可以方便地选择跟踪目标,并在不同的播放状态中查看跟踪效果。文章详细描述了系统的原理、逻辑流程以及实现过程中所涉及的关键公式和逻辑图。

2. 系统概述

本系统旨在实现对视频中目标的实时跟踪,适用于多种应用场景,如安全监控、体育比赛分析和自动驾驶等。系统的核心功能包括:

  • 目标选择:通过鼠标拖动选择感兴趣区域(ROI),作为模板。
  • 多尺度模板匹配:在不同缩放比例下进行模板匹配,提高跟踪的鲁棒性。
  • 暂停与恢复播放:用户可以通过空格键暂停或恢复视频播放,方便观察跟踪效果。
  • FPS 显示:实时显示帧率,便于性能评估。
  • 状态可视化:通过绘制矩形框和文本提示,直观地展示跟踪状态。

3. 系统原理

3.1 模板匹配的基本原理

模板匹配是一种基于块匹配的算法,通过计算模板图像与目标图像之间的相似度来确定模板在目标图像中的位置。相似度可以通过多种方法计算,本文使用的是归一化互相关系数(Normalized Cross-Correlation, NCC)。

归一化互相关系数公式为:

R i j = ∑ k = 0 w − 1 ∑ l = 0 h − 1 ( I k + x i , l + y j − I ˉ ) ( T k , l − T ˉ ) ∑ k = 0 w − 1 ∑ l = 0 h − 1 ( I k + x i , l + y j − I ˉ ) 2 ∑ k = 0 w − 1 ∑ l = 0 h − 1 ( T k , l − T ˉ ) 2 R_{ij} = \frac{\sum_{k=0}^{w-1} \sum_{l=0}^{h-1} (I_{k+xi, l+yj} - \bar{I})(T_{k,l} - \bar{T})}{\sqrt{\sum_{k=0}^{w-1} \sum_{l=0}^{h-1} (I_{k+xi, l+yj} - \bar{I})^2} \sqrt{\sum_{k=0}^{w-1} \sum_{l=0}^{h-1} (T_{k,l} - \bar{T})^2}} Rij=k=0w1l=0h1(Ik+xi,l+yjIˉ)2 k=0w1l=0h1(Tk,lTˉ)2 k=0w1l=0h1(Ik+xi,l+yjIˉ)(Tk,lTˉ)

其中:

  • ( R_{ij} ) 表示在图像 ( I ) 中位置 ( (xi, yj) ) 处的匹配得分。
  • ( T_{k,l} ) 是模板图像的像素值。
  • ( I_{k+xi, l+yj} ) 是目标图像中的像素值。
  • ( \bar{I} ) 和 ( \bar{T} ) 分别是目标图像块和模板图像的均值。

最大值 ( R_{ij} ) 对应的位置即为模板在目标图像中的最佳匹配位置。

3.2 多尺度匹配

为了处理目标在视频中的缩放变化,系统引入了多尺度匹配。在不同缩放比例下,对模板进行缩放并计算匹配得分,找到最佳匹配比例和位置。

多尺度匹配的公式如下:

R best = max ⁡ s ∈ S ( max ⁡ i , j R i j ( s ) ) R_{\text{best}} = \max_{s \in S} \left( \max_{i,j} R_{ij}(s) \right) Rbest=sSmax(i,jmaxRij(s))

其中:

  • ( R_{\text{best}} ) 是所有尺度下的最大匹配得分。
  • ( S ) 是预先定义的比例尺集合。
  • ( R_{ij}(s) ) 是在比例尺 ( s ) 下的匹配得分。

4. 逻辑流程

4.1 系统初始化

  1. 打开视频文件或摄像头。
  2. 获取视频的基本参数(宽度、高度、帧率)。
  3. 定义窗口和鼠标回调函数。
  4. 初始化全局变量。

4.2 主循环

  1. 读取帧:根据暂停状态决定是否读取下一帧。
  2. 帧处理
    • 调整帧大小以适应显示窗口。
    • 绘制鼠标选择的 ROI。
    • 执行目标跟踪(如果模板已初始化)。
    • 显示帮助信息和状态。
  3. 按键处理
    • 空格键暂停/恢复播放。
    • Q 键退出系统。

4.3 逻辑流程图

以下是系统的主要逻辑流程图:

初始化
主循环
读取帧
框架绘制
帧处理
按键处理
目标跟踪

5. 关键代码解析

5.1 鼠标回调函数

def mouse_callback(event, x, y, flags, param):global dragging, start_point, end_point, rect, template, tracking, current_frameif event == cv2.EVENT_LBUTTONDOWN:dragging = Truestart_point = (x, y)end_point = (x, y)tracking = Falseelif event == cv2.EVENT_MOUSEMOVE:if dragging:end_point = (x, y)elif event == cv2.EVENT_LBUTTONUP:dragging = Falseend_point = (x, y)# 计算矩形区域x1 = min(start_point[0], end_point[0])y1 = min(start_point[1], end_point[1])x2 = max(start_point[0], end_point[0])y2 = max(start_point[1], end_point[1])rect = (x1, y1, x2 - x1, y2 - y1)# 初始化模板if rect is not None and current_frame is not None:x, y, w, h = recttemplate = current_frame[y:y + h, x:x + w]tracking = True

该函数实现了鼠标选择 ROI 的功能,通过拖动鼠标确定矩形区域,并将其作为模板。

5.2 多尺度模板匹配

def multi_scale_template_match(frame_gray, template_gray, scales=np.linspace(0.8, 1.2, 5)):orig_h, orig_w = template_gray.shape[:2]best_match = Nonebest_match_location = Nonebest_scale = 1.0for scale in scales:resized = cv2.resize(template_gray, (int(orig_w * scale), int(orig_h * scale)))result = cv2.matchTemplate(frame_gray, resized, cv2.TM_CCOEFF_NORMED)_, max_val, _, max_loc = cv2.minMaxLoc(result)if best_match is None or max_val > best_match:best_match = max_valbest_match_location = max_locbest_scale = scalereturn best_match_location, best_scale

该函数通过多尺度匹配,找到最佳匹配位置和比例,提高了跟踪的鲁棒性。

6. 系统优势与不足

6.1 优势

交互性强:用户可以通过鼠标选择 ROI,操作简单直观。
鲁棒性高:多尺度匹配提高了对目标缩放变化的适应能力。
实时性好:通过优化模板匹配和暂停功能,保证了系统的实时性。

6.2 不足

对光照和视角变化敏感:模板匹配方法在光照和视角变化较大的场景下效果不佳。
背景复杂的场景:在背景复杂或目标特征不明显时,跟踪效果可能不稳定。
总的来讲模板匹配不适合剧烈运动一类。

7. 总结

本文介绍的视频目标跟踪系统基于 OpenCV 实现,具有较强的交互性和鲁棒性。通过多尺度模板匹配和暂停功能,用户可以方便地选择跟踪目标并观察跟踪效果。然而,系统在光照变化和复杂背景场景下的表现仍有待改进。未来的研究可以结合深度学习方法,进一步提高跟踪的准确性和鲁棒性。
希望这篇文章能满足您的需求!如果有任何需要调整或补充的地方,请随时告诉我。

相关资料

Pythonopencv教程
opencv教程

相关文章:

【OpenCV实战】基于 OpenCV 的多尺度与模板匹配目标跟踪设计与实现

文章目录 基于 OpenCV 的模板匹配目标跟踪设计与实现1. 摘要2. 系统概述3. 系统原理3.1 模板匹配的基本原理3.2 多尺度匹配 4. 逻辑流程4.1 系统初始化4.2 主循环4.3 逻辑流程图 5. 关键代码解析5.1 鼠标回调函数5.2 多尺度模板匹配 6. 系统优势与不足6.1 优势6.2 不足 7. 总结…...

算法--最长回文子串

给你一个字符串 s,找到 s 中最长的回文子串 示例 1: 输入:s “babad” 输出:“bab” 解释:“aba” 同样是符合题意的答案。 示例 2: 输入:s “cbbd” 输出:“bb” 看似困难&…...

20250205确认荣品RK3566开发板在Android13下可以使用命令行reboot -p关机

20250205确认荣品RK3566开发板在Android13下可以使用命令行reboot -p关机 2025/2/5 16:10 缘起:荣品RK3566开发板在Android13下,希望通过Native C语言程序来控制RK3566的关机。 通过ADB,很容易通过reboot -p命令关机。 最开始以为需要su/root…...

java进阶专栏的学习指南

学习指南 java类和对象java内部类和常用类javaIO流 java类和对象 类和对象 java内部类和常用类 java内部类精讲Object类包装类的认识String类、BigDecimal类初探Date类、Calendar类、SimpleDateFormat类的认识java Random类、File类、System类初识 javaIO流 java IO流【…...

Selenium记录RPA初阶 - 基本输入元件

防止自己遗忘,故作此为记录。 爬取网页基本元件并修改后爬取。 包含元件: elements: dict[str, str] {"username": None,"password": None,"email": None,"website": None,"date": None,"ti…...

每日Attention学习20——Group Shuffle Attention

模块出处 [MICCAI 24] [link] LB-UNet: A Lightweight Boundary-Assisted UNet for Skin Lesion Segmentation 模块名称 Group Shuffle Attention (GSA) 模块作用 轻量特征学习 模块结构 模块特点 使用分组(Group)卷积降低计算量引入External Attention机制更好的学习特征S…...

DeepSeek:全栈开发者视角下的AI革命者

目录​​​​​​​ DeepSeek:全栈开发者视角下的AI革命者 写在前面 一、DeepSeek的诞生与定位 二、DeepSeek技术架构的颠覆性突破 1、解构算力霸权:从MoE架构到内存革命 2、多模态扩展的技术纵深 3、算法范式的升维重构 4、重构AI竞争规则 三、…...

Docker 国内最新可用镜像源20250205

2年没用dockerhub了结果今天发现镜像无法拉取了,找了很多镜像都无效,连阿里云镜像都不行了,最后找到下面可以用的。 Docker镜像仓库备注hub.urlsa.us.kg可用http://hub.haod.eu.org可用http://hub.chxza.eu.org可用http://ccoc.eu.org部分地…...

OpenEuler学习笔记(十八):搭建企业云盘服务

要在 OpenEuler 上搭建企业云盘,可借助一些开源软件来实现,以下以 Nextcloud 为例详细介绍搭建步骤。Nextcloud 是一款功能丰富的开源云存储解决方案,支持文件共享、同步、协作等多种功能。 1. 系统环境准备 确保 OpenEuler 系统已更新到最…...

redis实际开发应用简单实现

短信登录 首先来看看登录与注册常规实现流程如下: 其中,很多网站都有手机号验证码登录功能 如百度 实现之前咱可以来验证码有啥特点:一定时间内过期、验证码随机、与手机号会唯一匹配 所以可以使用redis的string来实现更容易,k…...

2. K8S集群架构及主机准备

本次集群部署主机分布K8S集群主机配置主机静态IP设置主机名解析ipvs管理工具安装及模块加载主机系统升级主机间免密登录配置主机基础配置完后最好做个快照备份 2台负载均衡器 Haproxy高可用keepalived3台k8s master节点5台工作节点(至少2及以上)本次集群部署主机分布 K8S集群主…...

flutter 专题四十七 Flutter 应用启动流程分析

众所周知,任何应用程序的启动都是从main()函数开始的,Flutter也不例外,main.dart文件的main函数开始的,代码如下。 void main() > runApp(MyApp());main函数则调用的是runApp函数,源码如下。 void runApp(Widget …...

proxmox通过更多的方式创建虚拟机

概述 作为一名资深运维工程师,我们经常需要在 Proxmox 虚拟化平台上创建和管理虚拟机。本文将介绍三种不同的方式在 Proxmox 上创建 Ubuntu 虚拟机: 通过 Proxmox 命令创建虚拟机通过 Shell 脚本自动化创建虚拟机使用 Proxmox API 创建虚拟机 每种方式…...

阿里云 ubuntu22.04 中国区节点安装 Docker

下面是一份在 Ubuntu 22.04 (Jammy) 上,通过阿里云镜像源来安装并配置 Docker 的详细步骤示例,可在中国区阿里云节点使用: 一、卸载旧版本 (如已安装) 如果系统中已经安装了旧版 Docker (可能是 docker、docker-engine、docker.io、containe…...

Java 中 LinkedList 的底层源码

在 Java 的集合框架中,LinkedList是一个独特且常用的成员。它基于双向链表实现,与数组结构的集合类如ArrayList有着显著差异。深入探究LinkedList的底层源码,有助于我们更好地理解其工作原理和性能特点,以便在实际开发中做出更合适…...

【物联网】ARM核常用指令(详解):数据传送、计算、位运算、比较、跳转、内存访问、CPSR/SPSR

文章目录 指令格式(重点)1. 立即数2. 寄存器位移 一、数据传送指令1. MOV指令2. MVN指令3. LDR指令 二、数据计算指令1. ADD指令1. SUB指令1. MUL指令 三、位运算指令1. AND指令2. ORR指令3. EOR指令4. BIC指令 四、比较指令五、跳转指令1. B/BL指令2. l…...

【LeetCode】5. 贪心算法:买卖股票时机

太久没更了,抽空学习下。 看一道简单题。 class Solution:def maxProfit(self, prices: List[int]) -> int:cost -1profit 0for i in prices:if cost -1:cost icontinueprofit_ i - costif profit_ > profit:profit profit_if cost > i:cost iret…...

【玩转 Postman 接口测试与开发2_017】第13章:在 Postman 中实现契约测试(Contract Testing)与 API 接口验证(下)

《API Testing and Development with Postman》最新第二版封面 文章目录 第十三章 契约测试与 API 接口验证8 导入官方契约测试集合9 契约测试集合的详细配置9.1 env-apiKey 的创建与设置9.2 env-workspaceId 的设置9.3 Mock 服务器及 env-server 的配置9.4 API 测试实例的配置…...

学习threejs,pvr格式图片文件贴图

👨‍⚕️ 主页: gis分享者 👨‍⚕️ 感谢各位大佬 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍⚕️ 收录于专栏:threejs gis工程师 文章目录 一、🍀前言1.1 ☘️PVR贴图1.2 ☘️THREE.Mesh…...

【人工智能】通用人工智能 AGI

AGI 是 Artificial General Intelligence 的缩写,中文翻译为通用人工智能。与我们常见的**特定人工智能(Narrow AI)**不同,AGI 是一个更高深、更具野心的目标。 AGI(人工通用智能)的定义 通用人工智能&am…...

基于PostGIS的省域空间相邻检索实践

目录 前言 一、相关空间检索函数 1、ST_touches函数 2、ST_Intersects函数 3、ST_Relate函数 4、区别于对比 二、空间相邻检索实践 1、省域表相关介绍 2、相关省域相邻查询 3、全国各省份邻居排名 三、总结 前言 在当今数字化时代,地理空间数据的高效管理…...

Java 2024年面试总结(持续更新)

目录 最近趁着金三银四面了五六家公司吧,也整理了一些问题供大家参考一下(适合经验三年左右的)。 面试问题(答案是我自己总结的,不一定正确): 总结: 最近趁着金三银四面了五六家公…...

JDK9新特性

文章目录 新特性:1.模块化系统使用模块化module-info.java:exports:opens:requires:provides:uses: 2.JShell启动Jshell执行计算定义变量定义方法定义类帮助命令查看定义的变量:/var…...

性能测试中的数据库连接池优化

目录 一、配置连接池参数 二、配置连接池数量 三、监控连接池 数据库连接池的意义是让连接复用,通过建立一个数据库连接池(缓冲区)以及一套连接的使用,分配,管理策略,使得该连接池中的连接可以得到高效&…...

1. 初识spark

背景: 作为一名开发人员,用内存处理数据是每天都在做的事情。内存处理数据最大的优势就是方便,快捷,可以很快得到结果,但是内存总是有瓶颈的,不管你运行代码的机器有多大的内存,总是有更大规模…...

专业学习|一文了解并实操自适应大邻域搜索(讲解代码)

一、自适应大邻域搜索概念介绍 自适应大邻域搜索(Adaptive Large Neighborhood Search,ALNS)是一种用于解决组合优化问题的元启发式算法。以下是关于它的详细介绍: -自适应大领域搜索的核心思想是:破坏解、修复解、动…...

Redis --- 使用zset处理排行榜和计数问题

在处理计数业务时,我们一般会使用一个数据结构,既是集合又可以保证唯一性,所以我们会选择Redis中的set集合: 业务逻辑: 用户点击点赞按钮,需要再set集合内判断是否已点赞,未点赞则需要将点赞数1…...

排序算法——快速排序

代码仓库: 1037827920/AlgorithmZoo 快速排序 算法步骤 选择基准元素,从数组中选择一个元素作为基准,通常选择方式有: 第一个元素最后一个元素中间元素随机选择 分区操作,将数组元素根据基准分为两部分,…...

有用的sql链接

『SQL』常考面试题(2——窗口函数)_sql的窗口函数面试题-CSDN博客 史上最强sql计算用户次日留存率详解(通用版)及相关常用函数 -2020.06.10 - 知乎 (zhihu.com) 1280. 学生们参加各科测试的次数 - 力扣(LeetCode&…...

手写MVVM框架-构建虚拟dom树

MVVM的核心之一就是虚拟dom树,我们这一章节就先构建一个虚拟dom树 首先我们需要创建一个VNode的类 // 当前类的位置是src/vnode/index.js export default class VNode{constructor(tag, // 标签名称(英文大写)ele, // 对应真实节点children,…...

C++单例模式

单例模式是一种设计模式,它保证一个类只有一个对象。因此单例模式要私有化构造函数,禁用拷贝构造以及赋值重载。同时还要提供一个静态成员函数获取单例对象。 单例模式有两种实现方式:饿汉模式和懒汉模式 饿汉模式:创建静态单例…...

SQL入门到精通 理论+实战 -- 在 MySQL 中学习SQL语言

目录 一、环境准备 1、MySQL 8.0 和 Navicat 下载安装 2、准备好的表和数据文件: 二、SQL语言简述 1、数据库基础概念 2、什么是SQL 3、SQL的分类 4、SQL通用语法 三、DDL(Data Definition Language):数据定义语言 1、操…...

RabbitMQ 可靠性投递

文章目录 前言一、RabbitMQ自带机制1、生产者发送消息注意1.1、事务(Transactions)1.2、发布确认(Publisher Confirms)1.2.1、同步1.2.2、异步 2、消息路由机制2.1、使用备份交换机(Alternate Exchanges)2.…...

Java常见的技术场景面试题

一、单点登录这块怎么实现的? 单点登录概述 单点登录:Single Sign On(简称SSO),只需要登录一次,就可以访问所有信任的应用系统 在以前的时候,一般我们就单系统,所有的功能都在同一个系统上。…...

使用 Postman 进行 API 测试:从入门到精通

使用 Postman 进行 API 测试:从入门到精通 使用 Postman 进行 API 测试:从入门到精通一、什么是 API 测试?二、Postman 简介三、环境搭建四、API 测试流程1. 收集 API 文档2. 发送基本请求示例:发送 GET 请求示例代码(…...

用python实现进度条

前言 在Python中,可以使用多种方式实现进度条。以下是几种常见的进度条格式的实现方法: 1. 使用 tqdm 库 tqdm 是一个非常流行的库,可以轻松地在循环中显示进度条。 from tqdm import tqdm import time# 示例:简单的进度条 fo…...

android 自定义通话录音

在 Android 开发中,实现通话录音功能通常涉及到对系统通话的拦截和录音。由于通话录音涉及到用户隐私和安全性,Android 系统对此有严格的限制和要求。在 Android 10(API 级别 29)及以上版本中,直接访问通话录音功能变得…...

WebSocket——环境搭建与多环境配置

一、前言:为什么要使用多环境配置? 在开发过程中,我们通常会遇到多个不同的环境,比如开发环境(Dev)、测试环境(Test)、生产环境(Prod)等。每个环境的配置和需…...

【自动化办公】批量图片PDF自定义指定多个区域识别重命名,批量识别铁路货物运单区域内容改名,基于WPF和飞桨ocr深度学习模型的解决方案

项目背景介绍 铁路货运企业需要对物流单进行长期存档,以便后续查询和审计。不同的物流单可能包含不同的关键信息,通过自定义指定多个区域进行识别重命名,可以使存档的图片文件名具有统一的规范和明确的含义。比如,将包含货物运单…...

在线教程丨YOLO系列10年更新11个版本,最新模型在目标检测多项任务中达SOTA

YOLO (You Only Look Once) 是计算机视觉领域中最具影响力的实时目标检测算法之一,以其高精度与高效性深受业界青睐,广泛应用于自动驾驶、安防监控、医疗影像等领域。 该模型最早于 2015 年由华盛顿大学研究生 Joseph Redmon 发布,开创了将目…...

c++可变参数详解

目录 引言 库的基本功能 va_start 宏: va_arg 宏 va_end 宏 va_copy 宏 使用 处理可变参数代码 C11可变参数模板 基本概念 sizeof... 运算符 包扩展 引言 在C编程中,处理不确定数量的参数是一个常见的需求。为了支持这种需求,C标准库提供了 &…...

Ubuntu安装VMware17

安装 下载本文的附件,之后执行 sudo chmod x VMware-Workstation-Full-17.5.2-23775571.x86_64.bundle sudo ./VMware-Workstation-Full-17.5.2-23775571.x86_64.bundle安装注意事项: 跳过账户登录的办法:断开网络 可能出现的问题以及解决…...

在Debian 12上安装VNC服务器

不知道什么标题 可以看到这个文章是通过豆包从国外网站copy的,先这样写着好了,具体的我有时间再补充,基本内容都在这里了。 在Debian 12上安装VNC服务器 简介 VNC(Virtual Network Computing,虚拟网络计算&#xf…...

设计模式Python版 外观模式

文章目录 前言一、外观模式二、外观模式示例三、抽象外观类四、抽象外观类示例 前言 GOF设计模式分三大类: 创建型模式:关注对象的创建过程,包括单例模式、简单工厂模式、工厂方法模式、抽象工厂模式、原型模式和建造者模式。结构型模式&am…...

Selenium 浏览器操作与使用技巧——详细解析(Java版)

目录 一、浏览器及窗口操作 二、键盘与鼠标操作 三、勾选复选框 四、多层框架/窗口定位 五、操作下拉框 六、上传文件操作 七、处理弹窗与 alert 八、处理动态元素 九、使用 Selenium 进行网站监控 前言 Selenium 是一款非常强大的 Web 自动化测试工具,能够…...

论文解读:《基于TinyML毫米波雷达的座舱检测、定位与分类》

摘要 本文提出了一种实时的座舱检测、定位和分类解决方案,采用毫米波(mmWave)雷达系统芯片(SoC),CapterahCAL60S344-AE,支持微型机器学习(TinyML)。提出了波束距离-多普勒…...

e2studio开发RA2E1(5)----GPIO输入检测

e2studio开发RA2E1.5--GPIO输入检测 概述视频教学样品申请硬件准备参考程序源码下载新建工程工程模板保存工程路径芯片配置工程模板选择时钟设置GPIO口配置按键口配置按键口&Led配置R_IOPORT_PortRead()函数原型R_IOPORT_PinRead()函数原型代码 概述 本篇文章主要介绍如何…...

数据结构:队列篇

图均为手绘,代码基于vs2022实现 系列文章目录 数据结构初探: 顺序表 数据结构初探:链表之单链表篇 数据结构初探:链表之双向链表篇 链表特别篇:链表经典算法问题 数据结构:栈篇 文章目录 系列文章目录前言一.队列的概念和结构1.1概念一、动态内存管理优势二、操作效率与安全性…...

idea中git的简单使用

提交,推送直接合并 合到哪个分支就到先切到哪个分支...

Java中的object类

1.Object类是什么? 🟪Object 是 Java 类库中的一个特殊类,也是所有类的父类(超类),位于类继承层次结构的顶端。也就是说,Java 允许把任何类型的对象赋给 Object 类型的变量。 🟦Java里面除了Object类,所有的…...