【目标检测】评估指标详解:Precision/Recall/F1-Score

🧑 博主简介:曾任某智慧城市类企业算法总监,目前在美国市场的物流公司从事高级算法工程师一职,深耕人工智能领域,精通python数据挖掘、可视化、机器学习等,发表过AI相关的专利并多次在AI类比赛中获奖。CSDN人工智能领域的优质创作者,提供AI相关的技术咨询、项目开发和个性化解决方案等服务,如有需要请站内私信或者联系任意文章底部的的VX名片(ID:xf982831907

💬 博主粉丝群介绍:① 群内初中生、高中生、本科生、研究生、博士生遍布,可互相学习,交流困惑。② 热榜top10的常客也在群里,也有数不清的万粉大佬,可以交流写作技巧,上榜经验,涨粉秘籍。③ 群内也有职场精英,大厂大佬,可交流技术、面试、找工作的经验。④ 进群免费赠送写作秘籍一份,助你由写作小白晋升为创作大佬。⑤ 进群赠送CSDN评论防封脚本,送真活跃粉丝,助你提升文章热度。有兴趣的加文末联系方式,备注自己的CSDN昵称,拉你进群,互相学习共同进步。

在这里插入图片描述

【目标检测】评估指标详解:Precision/Recall/F1-Score

    • 一、引言
    • 二、为什么需要评估指标?
    • 三、基础概念:混淆矩阵
    • 四、核心指标解析
      • 4.1 精确率 (Precision):检测的准确性
      • 4.2 召回率 (Recall):检测的覆盖率
      • 4.3 F1分数 (F1-Score):综合平衡指标
    • 五、目标检测中的特殊考量
      • 5.1 IoU (交并比)
      • 5.2 置信度阈值
    • 六、完整代码实现
    • 七、代码解析与输出
      • 7.1 模拟数据生成
      • 7.2 评估指标计算
      • 7.3 典型输出结果
      • 7.4 PR曲线分析
    • 八、评估指标关系图解
      • 8.1 精确率-召回率平衡
      • 8.2 置信度阈值影响
      • 8.3 F1分数的平衡作用
    • 九、目标检测中的高级指标
      • 9.1 AP (Average Precision)
      • 9.2 mAP (mean Average Precision)
      • 9.3 不同IoU阈值的mAP
    • 十、实际应用指南
      • 10.1 根据需求选择指标
      • 10.2 模型调优策略
      • 10.3 指标提升技巧
    • 十一、总结

一、引言

  目标检测模型的性能评估如同考试评分,需要精确衡量模型的能力。本文将用通俗易懂的方式解析三大核心评估指标:精确率(Precision)、召回率(Recall)和F1分数(F1-Score),并提供可运行的Python代码。

二、为什么需要评估指标?

  目标检测模型训练完成后,我们需要回答关键问题:

  • 模型检测的准确度如何?
  • 有多少真实物体被漏检?
  • 模型产生了多少误报?

  评估指标就是回答这些问题的"评分标准"。

三、基础概念:混淆矩阵

  混淆矩阵是理解评估指标的基石:

预测为正例预测为负例
实际为正例TP (真正例)FN (假反例)
实际为负例FP (假正例)TN (真负例)

  在目标检测中:

  • TP (True Positive):正确检测到的物体(IoU > 阈值)
  • FP (False Positive):误报(检测到不存在的物体)
  • FN (False Negative):漏检(未检测到真实物体)

四、核心指标解析

4.1 精确率 (Precision):检测的准确性

精确率 = TP / (TP + FP)
  • 含义:模型预测的正例中有多少是真实的
  • 通俗理解:警察抓人时,抓对人(真正罪犯)的比例
  • 应用场景:对误报敏感的任务(如医疗诊断)

4.2 召回率 (Recall):检测的覆盖率

召回率 = TP / (TP + FN)
  • 含义:实际的正例中有多少被检测到
  • 通俗理解:所有罪犯中有多少被警察抓到
  • 应用场景:对漏检敏感的任务(如安防监控)

4.3 F1分数 (F1-Score):综合平衡指标

F1 = 2 × (Precision × Recall) / (Precision + Recall)
  • 含义:精确率和召回率的调和平均数
  • 通俗理解:平衡抓对人(精确率)和抓全人(召回率)的综合评分
  • 特点:在精确率和召回率之间取得平衡

五、目标检测中的特殊考量

5.1 IoU (交并比)

  目标检测中,判断检测是否正确需要计算IoU:

IoU = 交集面积 / 并集面积

通常IoU ≥ 0.5才被认为是正确检测(TP)

在这里插入图片描述

5.2 置信度阈值

  每个检测框都有置信度分数,影响评估结果:

  • 阈值越高:精确率↑,召回率↓
  • 阈值越低:精确率↓,召回率↑

六、完整代码实现

import numpy as np
import matplotlib.pyplot as plt
from sklearn.metrics import precision_recall_curve, average_precision_score# 1. 模拟真实数据和预测数据
def generate_sample_data(num_objects=50, detection_rate=0.8, false_positive_rate=0.3):"""生成模拟检测数据"""# 真实物体 (每个物体用[x,y,w,h]表示)true_objects = np.random.rand(num_objects, 4) * 100# 正确检测 (TP)num_detected = int(num_objects * detection_rate)true_positives = true_objects[:num_detected] + np.random.normal(0, 2, (num_detected, 4))tp_confidences = np.random.uniform(0.7, 0.95, num_detected)# 漏检 (FN)false_negatives = true_objects[num_detected:]# 误报 (FP)num_fp = int(num_objects * false_positive_rate)false_positives = np.random.rand(num_fp, 4) * 100fp_confidences = np.random.uniform(0.4, 0.7, num_fp)# 合并预测结果all_detections = np.vstack([true_positives, false_positives])all_confidences = np.concatenate([tp_confidences, fp_confidences])detection_types = ['TP'] * num_detected + ['FP'] * num_fp# 为每个检测生成标签 (1=TP, 0=FP)detection_labels = np.concatenate([np.ones(num_detected),  # TP标签np.zeros(num_fp)        # FP标签])return true_objects, all_detections, all_confidences, detection_types, detection_labels# 2. 计算IoU
def calculate_iou(boxA, boxB):"""计算两个边界框的交并比(IoU)"""# 提取坐标xA = max(boxA[0], boxB[0])yA = max(boxA[1], boxB[1])xB = min(boxA[0] + boxA[2], boxB[0] + boxB[2])yB = min(boxA[1] + boxA[3], boxB[1] + boxB[3])# 计算交集面积inter_area = max(0, xB - xA) * max(0, yB - yA)# 计算并集面积boxA_area = boxA[2] * boxA[3]boxB_area = boxB[2] * boxB[3]union_area = boxA_area + boxB_area - inter_area# 计算IoUiou = inter_area / union_area if union_area > 0 else 0return iou# 3. 计算评估指标
def calculate_metrics(true_objects, detections, confidences, iou_threshold=0.5):"""计算精确率、召回率、F1分数"""# 初始化结果num_true = len(true_objects)num_detections = len(detections)# 记录匹配状态matched_true = np.zeros(num_true, dtype=bool)matched_detections = np.zeros(num_detections, dtype=bool)# 遍历所有检测结果for i, det in enumerate(detections):for j, true_obj in enumerate(true_objects):iou = calculate_iou(det, true_obj)if iou >= iou_threshold and not matched_true[j]:matched_true[j] = Truematched_detections[i] = Truebreak# 计算基本指标TP = np.sum(matched_detections)FP = num_detections - TPFN = num_true - np.sum(matched_true)# 计算评估指标precision = TP / (TP + FP) if (TP + FP) > 0 else 0recall = TP / (TP + FN) if (TP + FN) > 0 else 0f1 = 2 * (precision * recall) / (precision + recall) if (precision + recall) > 0 else 0return precision, recall, f1, TP, FP, FN, matched_detections# 4. 绘制PR曲线
def plot_pr_curve(true_objects, detections, confidences, detection_labels):"""绘制精确率-召回率曲线"""# 计算不同置信度阈值下的指标thresholds = np.linspace(0, 1, 100)precisions = []recalls = []# 计算AP (平均精度) - 使用正确的标签和置信度ap = average_precision_score(detection_labels, confidences)for thresh in thresholds:# 筛选高于阈值的检测mask = confidences >= threshfiltered_detections = detections[mask]if len(filtered_detections) > 0:p, r, _, _, _, _, _ = calculate_metrics(true_objects, filtered_detections, confidences[mask])precisions.append(p)recalls.append(r)else:precisions.append(0)recalls.append(0)# 绘制曲线plt.figure(figsize=(10, 6))plt.plot(recalls, precisions, 'b-', linewidth=2, label='PR曲线')plt.fill_between(recalls, precisions, alpha=0.2, color='b')# 标记关键点plt.scatter(recalls[::10], precisions[::10], c='r', s=50, zorder=5, label=f'阈值点 (AP={ap:.3f})')plt.xlabel('召回率(Recall)')plt.ylabel('精确率(Precision)')plt.title('精确率-召回率曲线 (PR Curve)')plt.grid(True)plt.legend()plt.xlim([0, 1])plt.ylim([0, 1])plt.savefig('pr_curve.png', dpi=300)plt.show()return ap# 5. 可视化检测结果
def visualize_detections(true_objects, detections, confidences, detection_types):"""可视化真实物体和检测结果"""plt.figure(figsize=(12, 8))# 创建模拟图像img = np.ones((100, 100, 3)) * 0.8# 绘制真实物体 (绿色)for obj in true_objects:x, y, w, h = objrect = plt.Rectangle((x, y), w, h, fill=False, edgecolor='g', linewidth=2, label='真实物体')plt.gca().add_patch(rect)# 绘制检测结果for i, (det, conf, det_type) in enumerate(zip(detections, confidences, detection_types)):x, y, w, h = detcolor = 'b' if det_type == 'TP' else 'r'rect = plt.Rectangle((x, y), w, h, fill=False, edgecolor=color, linewidth=2, label=f'检测({det_type})' if i == 0 else None)plt.gca().add_patch(rect)# 添加置信度标签plt.text(x, y-5, f'{conf:.2f}', color=color, fontsize=9,bbox=dict(facecolor='white', alpha=0.7))# 设置图像范围plt.xlim(0, 100)plt.ylim(0, 100)plt.gca().invert_yaxis()  # 图像坐标系plt.title('目标检测结果可视化 (绿色:真实物体, 蓝色:正确检测, 红色:误报)')plt.legend()plt.grid(True)plt.savefig('detection_results.png', dpi=300)plt.show()# 6. 主程序
def main():# 生成模拟数据np.random.seed(42)true_objects, detections, confidences, detection_types, detection_labels = generate_sample_data(num_objects=20, detection_rate=0.7, false_positive_rate=0.2)# 计算评估指标precision, recall, f1, TP, FP, FN, matched_detections = calculate_metrics(true_objects, detections, confidences)# 打印结果print("="*50)print("目标检测评估指标报告")print("="*50)print(f"真实物体数量: {len(true_objects)}")print(f"检测结果数量: {len(detections)}")print(f"真正例(TP): {TP} (正确检测)")print(f"假正例(FP): {FP} (误报)")print(f"假反例(FN): {FN} (漏检)")print("-"*50)print(f"精确率(Precision): {precision:.4f}")print(f"召回率(Recall): {recall:.4f}")print(f"F1分数(F1-Score): {f1:.4f}")print("="*50)# 可视化检测结果print("可视化检测结果...")visualize_detections(true_objects, detections, confidences, detection_types)# 绘制PR曲线print("绘制PR曲线...")ap = plot_pr_curve(true_objects, detections, confidences, detection_labels)print(f"平均精度(AP): {ap:.4f}")# 不同置信度阈值的影响print("\n不同置信度阈值对指标的影响:")thresholds = [0.2, 0.4, 0.6, 0.8]results = []for thresh in thresholds:mask = confidences >= threshfiltered_detections = detections[mask]p, r, f, _, _, _, _ = calculate_metrics(true_objects, filtered_detections, confidences[mask])results.append((thresh, p, r, f))# 打印表格print("阈值 | 精确率 | 召回率 | F1分数")print("-"*30)for thresh, p, r, f in results:print(f"{thresh:.1f}   | {p:.4f} | {r:.4f} | {f:.4f}")# 绘制指标变化曲线plt.figure(figsize=(10, 6))thresholds, precisions, recalls, f1s = zip(*results)plt.plot(thresholds, precisions, 'bo-', label='精确率')plt.plot(thresholds, recalls, 'ro-', label='召回率')plt.plot(thresholds, f1s, 'go-', label='F1分数')plt.xlabel('置信度阈值')plt.ylabel('指标值')plt.title('不同置信度阈值对评估指标的影响')plt.legend()plt.grid(True)plt.savefig('threshold_impact.png', dpi=300)plt.show()# F1分数的平衡作用演示print("\nF1分数的平衡作用演示:")scenarios = [("高精确率低召回率", 0.9, 0.3),("平衡", 0.7, 0.7),("低精确率高召回率", 0.3, 0.9)]for name, p, r in scenarios:f1 = 2 * p * r / (p + r) if (p + r) > 0 else 0print(f"{name}: Precision={p:.2f}, Recall={r:.2f}, F1={f1:.4f}")if __name__ == "__main__":main()

七、代码解析与输出

7.1 模拟数据生成

generate_sample_data 函数:
- 生成真实物体(绿色框)
- 生成正确检测(TP,蓝色框)
- 生成误报检测(FP,红色框)
- 生成漏检物体(FN)

在这里插入图片描述

7.2 评估指标计算

calculate_metrics 函数:
1. 计算每个检测框与真实框的IoU
2. 匹配IoU>0.5的检测为TP
3. 计算:Precision = TP / (TP + FP)Recall = TP / (TP + FN)F1 = 2 × (P × R) / (P + R)

在这里插入图片描述

7.3 典型输出结果

在这里插入图片描述

7.4 PR曲线分析

  • X轴:召回率(Recall)
  • Y轴:精确率(Precision)
  • 曲线下面积(AP):综合性能指标

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

八、评估指标关系图解

8.1 精确率-召回率平衡

高精确率场景:警察只抓确认的罪犯 → 抓得准但抓得少
高召回率场景:警察怀疑所有可疑人 → 抓得多但误抓多
理想平衡点:F1分数最高处

8.2 置信度阈值影响

阈值提高 → 精确率↑ 召回率↓
阈值降低 → 精确率↓ 召回率↑

8.3 F1分数的平衡作用

场景1:Precision=0.9, Recall=0.3 → F1=0.45
场景2:Precision=0.7, Recall=0.7 → F1=0.70
场景3:Precision=0.3, Recall=0.9 → F1=0.45

九、目标检测中的高级指标

9.1 AP (Average Precision)

AP = ∫ Precision(Recall) dRecall
  • PR曲线下面积
  • 综合反映不同召回率下的精确率

9.2 mAP (mean Average Precision)

mAP = 所有类别AP的平均值
  • 多类别检测的标准指标
  • COCO竞赛的核心评估指标

9.3 不同IoU阈值的mAP

指标IoU阈值特点
mAP@0.50.50宽松标准
mAP@0.750.75严格标准
mAP@[.5:.95]0.5-0.95综合性能

   AP和mAP将在后面的文章做详细的讲解;

十、实际应用指南

10.1 根据需求选择指标

  • 安全关键场景(自动驾驶):
    优先召回率:减少漏检
    
  • 用户体验场景(相册管理):
    优先精确率:减少误报
    

10.2 模型调优策略

# 精确率低 → 减少误报
1. 提高置信度阈值
2. 增加难负样本训练
3. 优化分类分支# 召回率低 → 减少漏检
1. 降低置信度阈值
2. 增加锚框密度
3. 优化特征提取网络

10.3 指标提升技巧

# 提升F1分数
if precision < recall:# 精确率是短板 → 减少FPmodel.focus_on_precision()
else:# 召回率是短板 → 减少FNmodel.focus_on_recall()

十一、总结

  三大评估指标是目标检测的性能标尺:

  1. 精确率(Precision):衡量检测的准确性

    • 公式:TP / (TP + FP)
    • 优化方向:减少误报
  2. 召回率(Recall):衡量检测的覆盖率

    • 公式:TP / (TP + FN)
    • 优化方向:减少漏检
  3. F1分数(F1-Score):综合平衡指标

    • 公式:2 × (P × R) / (P + R)
    • 应用场景:需要平衡准确性和覆盖率的任务

关键点回顾

  • 混淆矩阵是评估基础:TP/FP/FN
  • IoU阈值决定检测是否有效(通常0.5)
  • PR曲线展示不同阈值下的性能
  • F1分数是精确率和召回率的调和平均
  • 实际应用中需根据场景需求选择优化方向

  掌握这些评估指标,你就能科学评估目标检测模型的性能,针对性地优化模型,构建更精准、更可靠的检测系统!

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【unity游戏开发——网络】网络协议、TCP vs UDP 本质区别

注意&#xff1a;考虑到热更新的内容比较多&#xff0c;我将热更新的内容分开&#xff0c;并全部整合放在【unity游戏开发——网络】专栏里&#xff0c;感兴趣的小伙伴可以前往逐一查看学习。 文章目录 一、网络协议概述二、OSI七层模型三、TCP/IP四层模型四、核心传输协议对比…

Spark Streaming 与 Flink 实时数据处理方案对比与选型指南

Spark Streaming 与 Flink 实时数据处理方案对比与选型指南 实时数据处理在互联网、电商、物流、金融等领域均有大量应用&#xff0c;面对海量流式数据&#xff0c;Spark Streaming 和 Flink 成为两大主流开源引擎。本文基于生产环境需求&#xff0c;从整体架构、编程模型、容…

鸿蒙HarmonyOS 5小游戏实践:记忆翻牌(附:源代码)

记忆翻牌游戏是一款经典的益智游戏&#xff0c;它能有效锻炼玩家的记忆力和观察能力。本文将详细介绍如何使用鸿蒙&#xff08;HarmonyOS&#xff09;的ArkUI框架开发一款完整的记忆翻牌游戏&#xff0c;涵盖游戏设计、核心逻辑实现和界面构建的全过程。 游戏设计概述 记忆翻牌…

【Linux庖丁解牛】— 文件系统!

1 引⼊"块"概念 其实硬盘是典型的“块”设备&#xff0c;操作系统读取硬盘数据的时候&#xff0c;其实是不会⼀个个扇区地读取&#xff0c;这样 效率太低&#xff0c;⽽是⼀次性连续读取多个扇区&#xff0c;即⼀次性读取⼀个”块”&#xff08;block&#xff09;。…

如何通过自动化减少重复性工作

通过自动化减少重复性工作的关键策略包括&#xff1a;1、识别可被规则化操作的任务、2、引入RPA&#xff08;机器人流程自动化&#xff09;工具、3、整合AI与业务流程系统、4、部署脚本与低代码平台、5、持续优化自动化场景与效率。 其中&#xff0c;“引入RPA工具”被广泛认为…

知识变现全链路设计:从IP打造到商业闭环的系统方法论|创客匠人

一、变现低效根源&#xff1a;碎片化努力为何换不来持续增长&#xff1f; 创客匠人服务上千位知识创业者后发现&#xff0c;变现乏力多因缺乏系统设计&#xff1a;某营销专家的课程因定位模糊、表达生硬、渠道单一&#xff0c;低价仍少有人问。文档中提出的“六大超级设计公式…

如何利用人工智能大模型提升流量质量

摘要 流量质量是衡量数字化营销效果的重要指标之一&#xff0c;它反映了用户对网站或应用的兴趣和满意度。流量质量的常用评估方法有点击率、跳出率和用户停留时间等。本文将介绍如何利用人工智能大模型来分析和优化这些指标&#xff0c;提高流量质量&#xff0c;从而提升数字…

从单体架构到微服务:微服务架构演进与实践

一、单体架构的困境与演进 &#xff08;一&#xff09;单体应用的初始优势与演进路径 在系统发展的初期&#xff0c;单体架构凭借其简单性和开发效率成为首选。单体应用将整个系统的所有功能模块整合在一个项目中&#xff0c;以单一进程的方式运行&#xff0c;特别适合小型系…

Elasticsearch 自定义排序:使用 Painless 脚本实现复杂排序逻辑

需求背景&#xff1a; 从es查询数据出来的时候&#xff0c;要求type为CATALOG的数据排在最前面&#xff0c;也就是目录类型的要放在最前面&#xff0c;而且要求按照层级排序&#xff0c;从L1到L5顺序排序 直接上解法&#xff1a; {//查询条件"query": {"bool…

华为云Flexus+DeepSeek征文|华为云数字人 + DeepSeek:智能交互的革命性突破

目录 前言 关于华为云数字人和云服务 1、华为云数字人 &#xff08;1&#xff09;MetaStudio介绍 &#xff08;2&#xff09;应用场景 &#xff08;3&#xff09;功能特性 &#xff08;4&#xff09;使用体验 2、华为云云服务 华为云数字人结合DeepSeek的核心流程 1、…

【GESP】C++四级练习 luogu-P5729 【深基5.例7】工艺品制作

GESP C四级练习&#xff0c;二维/多维数组练习&#xff0c;难度★★☆☆☆。 题目题解详见&#xff1a;【GESP】C四级练习 luogu-P5729 【深基5.例7】工艺品制作 | OneCoder 【GESP】C四级练习 luogu-P5729 【深基5.例7】工艺品制作 | OneCoderGESP C四级练习&#xff0c;二维…

通过npm install -g yarn安装Yarn显示Proxy代理相关问题如何解决?

手动下载yarn.msi安装包或者yarn.js文件 参考&#xff1a;windows 怎么下载yarn安装包并将下载的yarn文件移动到全局目录并添加执行权限&#xff1f;-CSDN博客

arm交叉编译qt应用中含opengl问题解决

问题是采用正点原子方案中&#xff0c;用虚拟机交叉编译含opengl的qt程序会出现编译失败问题&#xff0c;因为正点原子中的交叉编译qt源码时没有编opengl。 野火似乎有解决&#xff1a; https://doc.embedfire.com/linux/rk356x/Qt/zh/latest/lubancat_qt/install/install_arm…

服务器排查与加固服务详细介绍

一、服务概述 服务器排查与加固服务是针对企业核心信息资产&#xff08;服务器&#xff09;的全方位安全保障方案&#xff0c;旨在通过系统性排查潜在风险、修复漏洞、优化配置&#xff0c;提升服务器抗攻击能力&#xff0c;确保业务连续性和数据安全性。该服务覆盖硬件、操作…

提升开发思维的设计模式(下)

上期回顾 提升开发思维的设计模式&#xff08;上&#xff09; 2. 设计模式分类&#xff08;23种设计模式&#xff09; 2.13 组合模式&#xff08;Composite Pattern&#xff09; 将对象组合成树形结构&#xff0c;以表示“整体-部分”的层次结构。 通过对象的多态表现&#…

h5学习笔记:前端打包

这2天做了一个实验。在非module传统的网页&#xff0c;要实现改名和避免缓存。原本这个事情早在几年前就做过借助gulp的方式或者fis3 的工具来完成。然而随着nodejs 来到了24版本后&#xff0c;似乎nodejs的版本这事情就变动复杂多变了。 为什么那么麻烦&#xff1f;实际上开发…

14.OCR字符识别

目录 1. 识别方法 1. OCR识别 2. OCR识别方法1-助手识别 3. OCR识别方法2-算子分割识别 4.文本分割识别 2. 文本分割 1. 借用助手设置参数文本分割+混合识别 2. 借用助手设置参数文本分割场景2 3.不同字符场景 1.倾斜字符 1. 识别方法 1. OCR识别 *OCR *1. 概念 * …

如果将Word里每页的行数设置成50行

https://www.zhihu.com/question/357856175 本文来自知乎林听晴 第一步&#xff1a;新建一个Word文档 打开“页面布局”&#xff0c;之后点击图片圈起来的小图标&#xff0c;即可出现“页面设置”页面。 ​ ​ 路径&#xff1a;页面设置—文档网络&#xff0c;可以看到默认行…

WebRTC(十一):RTCP和SRTCP

RTCP 基本概念 RTCP 是 RTP 的控制协议&#xff0c;用于监控媒体传输质量和参与者状态&#xff0c;并与 RTP 一起工作。RTP 用于传输媒体数据&#xff08;如音视频&#xff09;&#xff0c;RTCP 则用于传输控制信息。 RTCP 通常和 RTP 同时使用&#xff0c;并通过 不同端口&…

将element-plus table背景改成透明色

方法一:全局修改(推荐) /* 全局透明表格样式 */ .el-table, .el-table__header-wrapper, .el-table__body-wrapper, .el-table__row {background-color: transparent !important; }/* 可选:自定义表头和斑马纹行的透明度 */ .el-table__header th {background-color: rgba(…