根据机械式表盘的图像特征,采用图像边缘点法线方向计数累加的圆心定位方法及过定点的直线检测算法,达到表盘识别的目标。仪表刻度检测流程如下: 摄像头采集表盘图像,送入计算机进行预处理及边缘检测操作;计算机检测出表盘回转中心及半径,并定位出表盘的有效显示区域;在此区域内,利用过定点( 回转中心)的Hough 直线变换,基于特征点对应角度的峰值搜索算法识别出指针中心线,从而输出检测结果。 ### 基于数字图像处理的表盘指针读数的Matlab实验程序知识点解析 #### 实验背景 指针式机械表盘由于其安装维护便捷、结构简单以及较强的抗电磁干扰能力,在工矿企业、能源及计量部门等领域中得到了广泛应用。然而,随着仪表数量的急剧增加和技术的进步,传统的人工读数方式已难以满足日益增长的需求。因此,开发一种能够自动识别并读取指针式表盘信息的技术变得尤为重要。 #### 实验目的 1. **理解基本原理**:通过本次实验,学生能够掌握机械式表盘自动读表技术的基础理论知识。 2. **熟悉关键技术**:了解和学习用于仪器表盘识别的主要算法和技术手段,如边缘检测、图像处理、Hough变换等。 3. **掌握实践技能**:学会使用MATLAB软件来实现上述技术,包括图像的预处理、边缘检测、二值化处理等。 #### 实验原理详解 根据机械式表盘的特点,本实验采用了以下核心技术和算法: 1. **图像预处理与边缘检测**: - 图像预处理是确保后续分析准确性的重要步骤之一。它通常包括灰度转换、阈值处理、二值化等操作,目的是去除噪声并突出图像的关键特征。 - 边缘检测则是通过检测图像中的像素强度突变来识别物体边界的过程。常用的边缘检测算子有Sobel算子、Canny算子等。 2. **圆心定位**: - 为了准确地定位表盘的中心位置,实验采用了基于图像边缘点法线方向计数累加的方法。这种方法能够有效地确定表盘的几何中心,从而为后续的分析提供基准点。 3. **Hough变换检测直线**: - Hough变换是一种常用于图像处理中的特征检测算法,可以用来识别图像中的直线、圆等几何形状。 - 在这个实验中,通过固定表盘的中心点(即前面确定的圆心),运用Hough变换检测从该点出发的所有可能直线,进而找出代表指针指向的直线。 #### 实验流程 1. **图像采集与预处理**: - 使用摄像头获取表盘图像。 - 将彩色图像转换为灰度图像,便于后续处理。 - 应用阈值分割技术进行二值化处理,使图像更加清晰。 2. **圆心定位与有效显示区域确定**: - 通过边缘检测技术找到表盘的边缘。 - 运用上述圆心定位算法确定表盘中心点和半径大小。 - 根据中心点和半径范围确定表盘的有效显示区域。 3. **指针识别**: - 在确定了表盘中心点后,使用过定点的Hough直线变换检测指针中心线。 - 通过峰值搜索算法识别指针所指的具体角度。 #### 实验程序代码分析 实验代码展示了从读取图像到最终指针识别的完整过程。主要包括以下几个步骤: 1. **读取与展示图像**: - 使用`imread`函数读取图像。 - 使用`imshow`函数展示原始RGB图像、灰度图像和二值化图像。 2. **图像预处理**: - 通过`rgb2gray`函数将RGB图像转换为灰度图像。 - 应用`graythresh`函数确定阈值,并使用`im2bw`函数进行二值化处理。 - 使用`bwmorph`函数进行细化处理,使得边缘更加精细。 3. **Hough变换与直线检测**: - 利用`hough`函数进行Hough变换。 - 使用`houghpeaks`函数找到峰值点,这些点对应可能的直线。 - 通过`houghlines`函数检测直线并填充间隙。 4. **结果可视化**: - 使用`imshow`和`plot`函数展示检测到的直线,并在图像中标注出来。 #### 结论 通过上述实验步骤,不仅可以实现指针式机械表盘的自动读数,还能提高读数的准确性和效率。此外,实验还加深了学生对于图像处理技术的理解,并锻炼了其实现复杂算法的能力。这对于未来从事相关领域的研究和开发工作具有重要的意义。
2025-06-24 17:00:37 22KB 图像处理 matlab
1
在IT领域,鼠标光标是用户与计算机交互的重要元素之一,它指示了用户在屏幕上当前的位置,便于操作和导航。"小蝌蚪鼠标光标指针"是一个独特的、具有创意的光标设计,其设计灵感来源于生物中的精子形象,采用黑白配色,形成了一种动态的视觉效果。 这个鼠标光标的设计主要体现在两个方面:图像和动画。精子的形象选择,为用户界面增添了一份趣味性和个性化。这种设计通常适用于非正式或娱乐性的软件环境,能够吸引用户的注意力,提供愉快的操作体验。特别是对于女性用户,这种可爱且独特的设计可能更受欢迎,因为它在视觉上给人带来轻松和愉悦的感觉。 动态效果是这个光标的一大亮点。在传统的鼠标光标中,通常只有一种静态的形状,如箭头或I-beam。然而,"小蝌蚪鼠标光标指针"的动态设计,使得光标在移动时呈现出一种生动活泼的动态轨迹,增加了操作过程的互动性。这种动态效果的实现,通常涉及到编程和动画技术,如GIF动画或者更复杂的一些动画格式,例如使用精灵表(Sprite Sheets)来序列化多个帧。 在实际应用中,更换鼠标光标通常需要用户自定义系统设置,或者通过第三方软件实现。在Windows操作系统中,用户可以在控制面板的“鼠标”设置中选择自定义光标;而在Mac OS中,可以在“系统偏好设置”的“鼠标”选项里进行更改。此外,还可以通过下载专门的光标主题包,这些主题包通常包含一系列不同类型的光标,用户可以根据个人喜好进行选择和安装。 在安全方面,下载和安装来自不可信来源的鼠标光标文件可能会存在风险,因为它们可能携带恶意代码。因此,确保从官方或信誉良好的网站获取此类资源至关重要。同时,使用过程中要注意版权问题,尊重原创设计,避免非法传播。 "小蝌蚪鼠标光标指针"是一种创新的用户界面设计,通过其独特的形象和动态效果,提升了人机交互的趣味性和个性化。不过,为了确保系统的稳定和安全,用户在更换鼠标光标时应遵循正确的操作步骤,并谨慎选择下载资源。
2025-06-20 10:31:48 569KB 鼠标光标指针
1
在本项目中,我们将深入探讨如何使用PyTorch框架实现YOLOv5模型进行指针式仪表盘的识别。YOLO(You Only Look Once)是一种实时目标检测系统,以其高效和准确性而广受赞誉,而YOLOv5是其最新版本,对前代进行了优化,提升了性能和速度。在电力、工业或家庭自动化等领域,识别指针式仪表盘读数具有重要意义,可以用于自动化监控和数据分析。 我们需要了解PyTorch。PyTorch是Facebook开发的一个开源深度学习框架,它基于Python,提供了动态计算图功能,使得模型构建和训练更加灵活。在本项目中,PyTorch将作为我们的基础工具,帮助我们构建和训练YOLOv5模型。 接着,我们来讨论YOLOv5模型。YOLOv5采用了Anchor Boxes,这是一种预定义的边界框,用于捕获不同比例和大小的目标。模型通过多尺度预测来提高检测性能,同时引入了批标准化层、数据增强技术以及损失函数的优化,进一步提升了检测精度和速度。在训练阶段,我们需要一个包含标注的数据集,以便模型能学习到目标的特征。 数据集是训练模型的关键。在这个项目中,"pytorch yolov5 指针表计识别 分步识别表计 数据集"应当包含大量的图像,这些图像展示了各种类型的指针式仪表盘,每个图像都应有精确的标注,包括仪表盘的位置、指针的角度和读数等信息。数据集的预处理工作包括图像的缩放、归一化、翻转和裁剪等,以增加模型的泛化能力。 对于指针式仪表盘的识别,我们需要考虑以下几个关键点: 1. **角度估计**:由于指针的读数通常依赖于指针相对于刻度盘中心的角度,我们需要训练模型识别并理解这个角度信息。 2. **背景去除**:仪表盘往往存在于复杂的背景下,模型需要学会忽略无关的背景元素,只关注指针和刻度盘。 3. **读数解码**:除了识别指针位置,模型还需要能够将角度转换为实际的数值读数,这可能涉及到复杂的映射关系。 4. **数据增强**:为了防止过拟合,我们可以采用随机旋转、裁剪、色彩扰动等数据增强技术,使模型对不同条件下的图像具有鲁棒性。 在训练过程中,我们将使用PyTorch的`DataLoader`加载数据,然后通过优化器(如Adam)和损失函数(如Smooth L1 Loss)进行模型训练。训练过程中需要定期验证模型性能,并根据验证结果调整超参数,例如学习率、批次大小等。 在完成训练后,我们可以将模型部署到实际应用中,如实时视频流分析,对图像中的指针式仪表盘进行实时检测和读数提取,从而实现自动化的监测和数据分析。 本项目涉及的关键技术包括PyTorch深度学习框架、YOLOv5目标检测模型、数据集的创建与标注、图像处理与增强、以及模型训练与优化。通过这些技术的综合运用,我们可以有效地解决指针式仪表盘的识别问题,为相关领域提供有力的自动化工具。
2025-06-17 23:14:28 241.37MB pytorch pytorch 数据集
1
特征: •完全可定制的数据提示。 • 没有要传递的论据。 从图中检索所有值。 • 对鼠标点击、鼠标移动或按下按钮移动鼠标的React。 • 也适用于箭头键。 • 激活鼠标右键以显示内插值。 • 显示最靠近鼠标指针的数据点。 • 与鼠标指针保持一定距离的曲线。*) • 将曲线的颜色复制为数据提示框的颜色。 • 也适用于 GUI。 限制: • 2D 绘图• 一个x 轴,不反转、线性或对数。 • 一个或两个 y 轴,不反转、线性或对数。 • 轴限制未设置为 -inf 或 inf,对数刻度限制设置为 > 0 • 图中至少有一个数据点• 对于内插值,图中至少有 2 个数据点。 垂直线没有插值。 方法: •获取鼠标指针的位置• 从图中检索所有数据• 将所有数据点转换为厘米• 将鼠标指针位置转换为 cm • 在鼠标指针位置设置原点• 查找从鼠标位置到所有数据线的垂脚• 确定最近点(脚到鼠标的距离最
2025-06-17 20:15:19 1.25MB matlab
1
《火影忍者鼠标指针》是一套专为火影忍者爱好者设计的个性化鼠标指针,它将经典的动漫元素融入到电脑操作中,为用户的桌面体验增添了一份独特的趣味性。这一主题通常包括一系列与火影忍者角色或标志相关的指针形状,如主角鸣人的螺旋丸、佐助的千鸟等经典技能图标,使得在日常使用电脑时,每一次鼠标移动都仿佛置身于火影世界。 我们需要了解如何更换电脑的鼠标指针。在Windows操作系统中,这可以通过“控制面板”实现。用户需进入“外观和个性化”设置,然后找到“更改鼠标指针”的选项。在这里,可以浏览并选择已下载的火影忍者鼠标指针主题文件,进行安装。安装过程中,系统会自动替换默认的鼠标指针样式,使鼠标在屏幕上呈现火影忍者的风格。 关于文件的解压缩,用户通常需要使用解压缩软件,如WinRAR或7-Zip。这些工具能够打开.zip或.rar等常见的压缩文件格式。在解压缩前,用户应确保下载的文件来源可靠,避免潜在的安全风险。解压后,将得到一个包含鼠标指针主题的文件夹,里面可能有多个.CUR或.ANI格式的文件,这些都是鼠标指针的图像文件。CUR文件用于静态指针,而ANI则用于动态效果,如指针悬停或点击时的动作。 在更换鼠标指针的过程中,用户需要注意系统兼容性问题。虽然大多数现代Windows系统都能支持个性化的鼠标指针,但在某些旧版本或配置较低的设备上,可能无法正常显示动态效果,或者运行不流畅。此外,一些防病毒软件可能会误报此类自定义指针为潜在威胁,因此在安装前关闭实时防护或者添加到信任列表是必要的。 值得注意的是,尽管这类个性化鼠标指针可以带来娱乐性,但过度依赖或频繁更换可能会影响工作效率。因此,用户在享受个性化的同时,也要考虑到实际使用的舒适度和功能性。 《火影忍者鼠标指针》是火影迷们展示自己爱好、提升桌面视觉体验的一个好选择。通过合理使用和正确安装,用户可以在日常使用电脑的过程中,享受到这一动漫元素带来的乐趣,同时也能保持良好的操作体验。
2025-05-13 23:41:28 27KB 火影忍者 鼠标指针
1
【图像识别】基于Hough变换指针式仪表识别(倾斜矫正)matlab代码.zip这个压缩包文件主要包含了一个使用Matlab实现的图像处理项目,该项目专注于指针式仪表的识别和倾斜矫正。以下是对相关知识点的详细说明: 1. **Hough变换**:Hough变换是一种在图像中检测直线、圆等几何形状的方法。它通过创建一个参数空间(Hough空间),将图像空间中的点映射到Hough空间中的线,从而找出图像中可能存在的直线。在本项目中,Hough变换用于识别仪表盘上的指针。 2. **图像预处理**:在进行图像识别之前,通常需要对原始图像进行预处理,包括灰度化、二值化、噪声去除等步骤。灰度化将彩色图像转换为单色图像,简化后续处理;二值化将图像分为黑白两种颜色,有助于突出目标特征;噪声去除则可以减少不相关信息,提高识别精度。 3. **倾斜矫正**:由于实际拍摄或扫描的图像可能存在角度偏差,因此需要进行倾斜矫正。这通常通过计算图像的透视变换矩阵实现,将图像校正至水平状态,确保指针与坐标轴平行,以便于后续的分析和识别。 4. **边缘检测**:在图像处理中,边缘检测是找出图像中不同亮度区域交界处的重要技术。Canny、Sobel或Prewitt等算法常用于此。在本项目中,边缘检测帮助识别出仪表盘的边界和指针的轮廓。 5. **图像阈值设定**:在二值化过程中,需要设定合适的阈值来区分背景和目标。动态阈值或自适应阈值方法可能更适用于具有复杂光照条件的图像。 6. **图像轮廓提取**:边缘检测后,可以通过查找连续像素点来提取目标物体的轮廓。在本例中,这一步骤有助于分离指针和其他仪表盘元素。 7. **形状分析**:在找到指针的轮廓后,可以通过形状分析(如面积、周长、形状因子等)来确认其是否为目标。指针通常具有特定的形状,如三角形或箭头形,这可以帮助识别。 8. **角度计算**:确定指针角度是识别的关键。这通常通过计算指针端点与基准线(例如仪表盘刻度的垂直线)之间的角度差来完成。可以使用向量的叉乘或极坐标转换来实现。 9. **Matlab编程**:作为标签所示,本项目使用了Matlab,这是一种强大的数值计算和可视化工具,内置丰富的图像处理函数库,使得图像识别和处理任务变得更为便捷。 10. **应用领域**:该技术可应用于工业自动化、机器人视觉导航、智能仪表读取等多个领域,特别是在需要自动读取和理解指针式仪表数据的场景中,例如汽车仪表盘读数的自动记录。 以上就是基于Hough变换的指针式仪表识别及倾斜矫正的Matlab代码所涉及的主要知识点,这些技术在现代图像处理和计算机视觉中有着广泛的应用。通过学习和理解这些概念,可以提升图像识别的准确性和自动化程度。
2025-04-18 13:11:33 1.27MB matlab
1
Material Design这套光标在致美化上有很多版本,这次给大家带来的是概念高清版,光标的尺寸为:32x 48x 64x 96x 128x,兼容 100%、125%、150%、175%、200% DPI,你可以随意调整它的大小。 Material Design是一套由谷歌公司推出的设计语言,旨在为不同平台上的应用提供统一的设计规范,以提升用户体验。该设计语言广泛应用于Android操作系统及其应用程序,同时也影响了网页设计和其他操作系统的界面设计。Material Design的设计哲学强调现实世界中物理属性的隐喻,例如阴影、表面和边缘,以及基于光与影的变化来模拟现实世界中纸张和墨水的视觉效果。 “Material Design 高清概念版光标-2025”是对Material Design中光标设计的一次升级,它提供了多种尺寸,分别是32x、48x、64x、96x、128x和192x,这种大小多样性意味着用户可以根据自己的需求和喜好,选择最适合自己的光标尺寸。光标的尺寸变化,不仅使得光标的显示更加清晰,还提升了用户在不同分辨率的屏幕上操作的舒适度。 该光标套装还兼容不同的DPI设置,包括100%、125%、150%、175%、200%,这样的设计使得光标在不同的显示设备上都能保持高清晰度和一致性。DPI指的是每英寸点数(Dots Per Inch),是衡量图像细节的常用单位。在屏幕显示中,高DPI意味着更多的像素点被压缩到同一面积内,从而使得显示更加细腻。高DPI兼容性保证了光标在不同分辨率的屏幕上都能保持精细的边缘和清晰的图像质量,提供了良好的用户体验。 光标的尺寸和DPI兼容性调整功能,对于设计师和专业人士来说尤为重要,因为他们对于界面元素的精度有着更高的要求。一个精确的光标可以提高工作效率,减少误操作的可能性。对于一般的用户来说,一个外观优雅且适应性强的光标,也能提升整体的使用感受。 此外,光标的个性化设置是提升用户界面体验的一个重要方面。Material Design概念版光标通过提供不同的尺寸选项,使得用户可以根据自己的习惯和屏幕的大小来调整光标,使得用户界面更加友好。这种设计不仅体现了Material Design注重用户体验的理念,也是界面设计适应用户个性化需求的一个例证。 材料设计风格的光标与传统光标相比,通常具有更现代的视觉风格和更流畅的动画效果。它们在不同的操作系统和环境中能够保持一致的外观和感觉,为用户提供一种无缝的跨平台体验。这种设计哲学不仅体现在光标的设计上,还贯穿于Material Design的方方面面,包括颜色使用、布局、动画和对用户交互的反馈等等。 随着科技的发展和用户需求的多样化,设计语言也在不断地更新和完善。Material Design概念版光标的推出,展示了设计师对于用户体验持续关注和创新的态度,同时也在推动整个设计界朝着更加人性化、实用化和美观化的方向发展。
2025-04-03 20:05:43 1.74MB 鼠标指针
1
C语言中的指针和结构体ppt课件 指针是C语言中的一种基本数据类型,它是一种特殊的变量,用于存储其他变量的地址。指针变量的类型和它所指向的变量的类型相同。 1. 指针的概念 在C语言中,指针是一种变量,它存储了其他变量的地址。例如,int \*p; 这里,p是一个整型指针,它可以存储整型变量的地址。 2. 指针变量的定义 指针变量的定义格式为:类型名 \* 指针变量名;例如,int \*p; 这里,p是一个整型指针。 3. 取地址运算符(&)和间接访问运算符(\*) 取地址运算符(&)用于获取变量的地址,而间接访问运算符(\*)用于访问指针所指向的变量。 例如,int x = 3; int \*p; p = &x; 这里,p存储了x的地址,然后可以通过\*p来访问x的值。 4. 指针变量的类型和它所指向变量的类型相同 例如,int \*p; p = &x; 这里,p是一个整型指针,它存储了x的地址,而x是一个整型变量。 5. 赋值运算 指针变量可以赋值给其他指针变量,例如,int \*p1, \*p2; p1 = &a; p2 = p1; 这里,p2也指向a。 6.注意:指针变量必须初始化 例如,void main() { int a = 1, b = 2, \*p1, \*p2, \*pt; p1 = &a; p2 = &b; ... } 7. 指针作为函数参数 指针可以作为函数参数,用于改变主调函数中某个变量的值。例如,void swap(int \*px, int \*py) { int t; t = \*px; \*px = \*py; \*py = t; } 8. 数组和地址之间的关系 数组名代表一个地址,它的值是数组首元素的地址(基地址)。例如,int a[100]; a+i 是距数组a的基地址的第i个偏移。 9. 任何由数组下标来实现的操作都能用指针来完成 例如,int a[100], \*p; p = a; 或 p = &a[0]; p+i 等价于 a[i]。
2025-03-28 08:30:00 289KB
1
**基数树(Radix Tree)**是一种高效的数据结构,尤其适用于存储和检索字符串或数字序列。它通过将数据转换为二进制表示并利用位运算来优化搜索性能,从而达到快速查找、插入和删除的目的。在C语言中实现基数树,可以充分利用C语言的低级特性,如指针操作,来构建高效的数据结构。 基数树的核心概念是**位向量(Bit Vector)**,它将每个字符或数字表示为一个固定长度的二进制串。当多个字符串有共同前缀时,它们在树中的路径也会共享这些前缀的节点,这大大减少了存储空间的需求。此外,由于每次比较都是基于位操作,查找速度非常快,通常在O(k)时间内完成,其中k是键的位数。 在C语言中,基数树的实现通常会涉及以下几个关键组件: 1. **节点(Node)**:每个节点代表一个或多个字符的位模式,并可能包含指向子节点的指针数组。每个子节点对应一个可能的下一位值。 2. **路径(Path)**:从根节点到特定节点的路径表示了一个字符串的二进制表示。每个节点对应路径上的一个字符或数字位。 3. **指针管理**:C语言中的指针需要谨慎管理,以防止内存泄漏和悬挂指针。插入和删除操作时,需要正确地分配和释放内存。 4. **位操作**:C语言提供了丰富的位操作符,如`&`(按位与)、`|`(按位或)、`^`(按位异或)和`<<`(左移)。这些操作符在基数树中用于比较和构造节点。 5. **插入算法**:插入新键时,从根节点开始,对键的每一位进行比较,创建或遍历到适当的子节点。如果到达叶子节点且键尚未完全匹配,则在该节点处创建新的子节点。 6. **查找算法**:查找操作类似,也是从根节点开始,逐位比较。如果在某一步找不到匹配的子节点,表示键不存在于树中。 7. **删除算法**:删除操作相对复杂,可能涉及到节点的合并和重新布局。如果一个节点的所有子节点都被删除,那么这个节点本身也需要被删除。 8. **优化策略**:为了进一步提高效率,可能需要考虑压缩节点(例如,将连续的相同位节点合并)或使用跳跃节点(跳过一系列相同的位)等技术。 在提供的压缩包文件`radix-tree-master`中,我们可以预期找到实现这些概念的源代码文件,包括节点定义、插入、查找和删除的函数,以及可能的测试用例和示例。通过阅读和理解这些代码,可以深入了解C语言中基数树的实现细节。同时,源码还可能包含一些设计和实现上的创新,例如错误处理、内存管理策略等,这些都是深入学习C语言数据结构的好材料。
2025-03-25 21:36:48 393KB
1
在Linux环境下,使用Java开发应用程序时,可能会遇到与字体相关的错误,特别是在使用像EasyExcel这样的库进行Excel导出时。标题和描述指出的问题是由于Java运行环境(JRE)缺少必要的字体库,导致在处理某些特定字体时抛出空指针异常(NullPointerException)。这个问题在使用OpenJDK时尤其常见,因为OpenJDK默认并不包含完整的字体集。 EasyExcel是一款由阿里开源的轻量级Java库,用于读写Excel文件。它提供了简单易用的API,但在处理涉及特殊字体的Excel模板时,如果系统中没有相应的字体,就可能出现错误。这种情况下,最常见的错误就是`NullPointerException`,这通常是因为EasyExcel试图加载不存在的字体导致的。 OpenJDK是Java Development Kit的一个开源实现,它遵循Java Community Process的规范,但与Oracle JDK相比,可能会有些功能缺失,比如字体库。OpenJDK不包含所有Windows或Mac上常见的字体,因此在处理需要特定字体的场景时,可能会出现问题。 为了解决这个问题,你可以按照以下步骤操作: 1. **下载字体库**:你需要找到缺少的字体库。可以去官方网站或者第三方资源站点下载你需要的字体文件,通常是`.ttf`或`.otf`格式。 2. **复制到JRE目录**:将下载的字体库文件复制到Java运行环境的字体目录。在Linux系统中,这个路径通常是`/usr/lib/jvm/java-版本-openjdk/jre/lib/fonts`。如果你使用的是自定义安装路径的JDK,那么路径可能是`/your/custom/path/to/jre/lib/fonts`。 3. **更新字体缓存**:在Linux系统中,为了使新添加的字体生效,需要更新系统的字体缓存。可以使用`fc-cache`命令,如`sudo fc-cache -fv`。 4. **重启应用**:完成上述步骤后,确保关闭并重新启动使用EasyExcel的应用程序,这样新的字体设置才能被程序识别。 通过这些步骤,你应该能够解决在Linux环境下,使用OpenJDK运行包含特定字体需求的Java应用时遇到的“NullPointerException”问题。不过,为了避免类似问题,你还可以考虑在Excel模板中使用系统广泛支持的通用字体,或者在代码中添加字体替换逻辑,以减少对特定字体的依赖。
2024-08-16 10:34:13 1.2MB linux java
1