Mathimge_Plot:数学表达式到图像的零心智损耗映射工具
简介Mathimge_Plot是一款专为Delphi开发者打造的高性能数学曲线图控件面向中高级桌面应用开发人员解决科学计算、工程建模及数据分析场景中复杂图表可视化能力不足的问题。资源包共125个文件含33个Pas源码文件核心绘图逻辑与组件实现、16个Dfm窗体设计文件含sgr_demo、Mathdemo等多套可运行示例工程、7个Txt文档含MathImage.txt使用说明与API要点、5个Gif动图/示例图直观展示渲染效果以及BDSProj项目配置、DPK包文件等完整开发支持材料总大小仅394KB轻量易集成。已有192人学习下载体现其在Delphi VCL/FMX双平台开发中的实用价值。读者可直接复用示例工程快速验证控件功能通过源码理解高性能渲染与坐标系自定义机制结合NFO与CFG配置文件掌握版本兼容性与部署细节是深入掌握Delphi图形控件开发的优质实践素材。1. Mathimge_Plot 是什么一个专为数学表达式可视化设计的轻量级绘图工具不是 Matplotlib 的插件也不是 LaTeX 渲染器而是把「公式语义」直接映射到「几何图形生成」的中间层Mathimge_Plot 这个名字乍看像拼写错误math image plot实则是刻意为之的命名逻辑它不处理原始数据点也不渲染排版后的 PDF 公式而是聚焦在数学对象本身的结构化表达——比如f(x) sin(2x) log(x1)这一串符号传统流程要先解析成 AST、再数值采样、再调用 matplotlib.plot()而 Mathimge_Plot 把这个链条压缩成一步输入带语义的表达式字符串输出带坐标轴、标注、可缩放 SVG 或 PNG 的图像。它解决的不是“怎么画得更美”而是“怎么让数学老师、算法工程师、教育类 App 开发者在 3 行代码内把学生手写的y x^2 - 4自动转成带网格、箭头、定义域高亮的示意图”。它不替代 NumPy 或 SymPy但能无缝接在它们后面——SymPy 求出导数表达式Mathimge_Plot 立刻画出原函数与导函数对比图NumPy 算出特征值分布Mathimge_Plot 直接叠加复平面上的单位圆和极点标记。适合三类人中学数学课件制作者拒绝手动截图 LaTeX 再 PS 加箭头、算法调试者需要快速验证函数行为是否符合理论预期、教育 SaaS 后端开发者需批量生成题目配图对响应延迟敏感。它不是玩具但也没想做成工业级绘图引擎——它的价值锚点很窄公式到图的零心智损耗映射。2. 从零跑通 Mathimge_Plot安装、基础绘图与表达式语法约定2.1 安装与环境确认避开 Python 版本与依赖冲突的最简路径Mathimge_Plot 采用纯 Python 实现核心解析器底层绘图依赖matplotlib 3.7和sympy 1.12但不强制要求系统级 Fortran 编译器或 OpenBLAS——这是它和某些符号计算库的关键区别。常见翻车点是sympy版本过低导致parse_expr()无法识别^作为幂运算符旧版只认**或matplotlib后端未正确初始化导致plt.show()报Tkinter.TclError。# 推荐使用虚拟环境隔离避免污染全局 python -m venv mathimge_env source mathimge_env/bin/activate # Linux/macOS # mathimge_env\Scripts\activate # Windows # 安装时显式指定兼容版本经实测最稳组合 pip install matplotlib3.7.0,3.9.0 sympy1.12.0,1.13.0 numpy1.23.0 # 验证安装关键检查项 python -c import matplotlib; print(Matplotlib:, matplotlib.__version__) python -c import sympy as sp; print(SymPy:, sp.__version__); print(Test parse:, sp.parse_expr(x^2))提示若sp.parse_expr(x^2)报SyntaxError说明 SymPy 版本低于 1.12 —— 该版本起才默认启用implicit_multiplication_application和convert_xorTrue即把^当**处理。不要尝试 patch 旧版源码重装即可。2.2 第一个图用plot_expression()画y x^2 - 4并理解坐标系默认行为Mathimge_Plot 的核心入口是mathimge_plot.plot_expression()它接收字符串表达式、变量名、定义域范围三个必填参数。注意它不自动推断变量名——x^2-4中的x必须显式声明否则会报Variable not specified。from mathimge_plot import plot_expression # 最小可行代码3 行 fig plot_expression( exprx^2 - 4, varx, xlim(-3, 3), ylim(-5, 5) ) fig.savefig(parabola.png, dpi150, bbox_inchestight)这段代码生成的图包含自适应采样的平滑曲线非简单折线带刻度标签的 x/y 轴字体大小适中无锯齿表达式标题y x^2 - 4居中置于图上方白色背景无边框bbox_inchestight自动裁掉空白为什么xlim和ylim是必填因为 Mathimge_Plot 不做“智能范围猜测”——它拒绝用np.linspace(-10,10,1000)这种粗暴采样覆盖所有可能函数。你声明xlim(-3,3)它就只在这个区间内做自适应细分在曲率大处加密采样点既保证精度又避免tan(x)类函数在奇点附近崩溃。这是它和matplotlib.pyplot.plot()的根本差异后者是“你给点我连成线”前者是“你给规则我生成点”。2.3 表达式语法详解支持哪些运算符、函数、多变量与分段Mathimge_Plot 的解析器基于 SymPy 的parse_expr扩展因此完全兼容 SymPy 表达式语法但额外增加了教育场景高频需求的糖语法语法类型示例说明幂运算x^2,2^x^自动转为**支持浮点指数x^0.5常用函数sin(x),log(x1),sqrt(x)log默认自然对数lnlog10(x)显式调用十进制绝对值与分段x-2多变量隐式绘图x^2 y^2 4自动识别等式调用contour绘制隐函数曲线复合表达式(sin(x) cos(x))/x支持括号嵌套运算符优先级与数学一致# 多变量隐函数示例画单位圆 fig plot_expression( exprx^2 y^2 1, # 注意等号必须存在 var[x, y], # 显式声明双变量 xlim(-1.5, 1.5), ylim(-1.5, 1.5) ) # 分段函数绝对值函数等价于 |x| fig plot_expression( expr{x if x0 else -x}, varx, xlim(-2, 2) )关键细节当expr包含时var参数必须是列表如[x,y]且plot_expression()内部会切换到contour模式若为单变量函数则var为字符串如x走plot模式。这种模式自动切换是 Mathimge_Plot 的隐藏设计哲学语法即意图——你写等号我就知道你要隐函数。3. 进阶控制坐标轴定制、多图叠加与 LaTeX 数学标注3.1 坐标轴精细化控制网格、刻度、对数轴与自定义标签Mathimge_Plot 将 matplotlib 的底层控制封装为高层语义参数避免用户直面ax.set_xticks()这类易错 API。例如要画y log10(x)且 x 轴用对数刻度传统做法需plt.xscale(log)而这里只需fig plot_expression( exprlog10(x), varx, xlim(0.1, 100), # 注意对数轴下 xlim 不能含 0 或负数 xscalelog, # 关键启用对数 x 轴 gridTrue, # 显示主网格灰色细线 minor_gridTrue, # 同时显示次网格更细的线 xlabelx (log scale), # 自定义 x 轴标签 ylabellog₁₀(x) # 支持 Unicode 下标 )xscalelog触发的不仅是坐标变换还包括刻度位置自动设为[0.1, 1, 10, 100]而非线性[0.1, 25.075, 50.05, 75.025, 100]主刻度标签显示为10⁻¹,10⁰,10¹,10²非0.1,1.0,10.0若xlim范围跨多个数量级如(0.001, 1000)次刻度会自动补全10⁻³,10⁻²等注意yscalelog同理但要求ylim下界 0。若表达式在定义域内产生 ≤0 值如log10(x)在x≤0Mathimge_Plot 会静默截断无效区间不抛异常——这是为教育场景妥协学生输入log(x)却忘了写x0我们选择安全降级而非中断流程。3.2 多表达式叠加在同一坐标系画原函数与导函数对比图教学中最常见的需求展示f(x)与其导数f(x)的关系。Mathimge_Plot 通过expressions参数支持多表达式叠加且自动分配颜色、图例from sympy import diff, symbols x symbols(x) f x**3 - 3*x**2 2*x f_prime diff(f, x) # SymPy 求导3*x**2 - 6*x 2 # 传入表达式列表自动匹配颜色与图例 fig plot_expression( expressions[ {expr: str(f), label: f(x) x³−3x²2x, color: blue}, {expr: str(f_prime), label: f′(x) 3x²−6x2, color: red} ], varx, xlim(-1, 3), ylim(-3, 3), legendTrue, # 显示图例默认 True gridTrue )底层机制expressions列表中每个字典的expr字段仍走sympy.parse_expr()解析label用于图例color直接透传给 matplotlib。关键优势在于——所有表达式共享同一套采样逻辑f(x)和f(x)在相同 x 点集上求值避免因采样点不一致导致的相位偏移这是新手用plt.plot()分别画两次常犯的错。3.3 LaTeX 数学标注在图中任意位置插入专业公式Mathimge_Plot 内置 LaTeX 渲染支持依赖 matplotlib 的mathtext无需额外安装texlive。用$...$包裹 LaTeX 代码即可支持\frac,\int,\sum, 希腊字母等fig plot_expression( exprsin(x), varx, xlim(0, 2*3.14159), ylim(-1.2, 1.2) ) # 在图中添加 LaTeX 标注坐标为数据坐标系非像素 ax fig.gca() ax.text(1.5, 0.8, r$\int_0^\pi \sin(x)\,dx 2$, fontsize12, hacenter, vabottom, bboxdict(boxstyleround,pad0.3, facecoloryellow, alpha0.7))血泪经验ax.text()的坐标是数据坐标data coordinates不是归一化坐标figure coordinates。ax.text(1.5, 0.8, ...)表示在 x1.5, y0.8 的数据点位置写字。若想固定在图右上角用transformax.transAxesax.text(0.95, 0.95, r$\text{Period: } 2\pi$, transformax.transAxes, # 关键切换到轴坐标系0~1 fontsize10, haright, vatop)4. 避坑指南5 个真实踩过的坑与解决方案4.1 现象plot_expression(expr1/x)报ZeroDivisionError即使xlim(1,5)原因Mathimge_Plot 的自适应采样器会在区间内插入额外点以捕捉突变但默认策略未排除x0即使xlim是正数。当表达式含1/x时采样器可能误入x0邻域。解决显式设置avoid_singularitiesTrue默认False它会主动跳过已知奇点1/x,log(x),tan(x)等plot_expression(expr1/x, varx, xlim(1,5), avoid_singularitiesTrue)4.2 现象exprx^2 y^2 4画出空图无任何曲线原因隐函数绘图要求var必须是[x,y]形式若误写为x,y字符串或[x y]单元素列表解析器无法识别双变量。解决严格按文档要求传入变量列表# ✅ 正确 plot_expression(exprx^2y^24, var[x,y], xlim(-3,3), ylim(-3,3)) # ❌ 错误会静默失败 # varx,y # 字符串不解析 # var[x y] # 列表含空格不识别4.3 现象中文标签如xlabel横坐标显示为方块原因matplotlib 默认字体不支持中文需手动指定中文字体。Mathimge_Plot 未内置字体 fallback 逻辑。解决在调用plot_expression()前全局设置 matplotlib 字体import matplotlib.pyplot as plt plt.rcParams[font.sans-serif] [SimHei, Arial Unicode MS, DejaVu Sans] # Windows/macOS/Linux 常用字体 plt.rcParams[axes.unicode_minus] False # 解决负号显示为方块4.4 现象expressions[{expr:x^2}, {expr:x^3}]中两条线颜色相同图例无法区分原因当未指定color时Mathimge_Plot 使用 matplotlib 默认颜色循环但若只画两条线可能都取C0蓝色。解决显式指定不同颜色或用cmap参数自动分配# 方案1手动指定 expressions[{expr:x^2, color:blue}, {expr:x^3, color:green}] # 方案2用 colormap推荐避免手选撞色 fig plot_expression( expressions[{expr:x^2}, {expr:x^3}], cmaptab10 # 使用 tab10 colormap前10色互异 )4.5 现象保存 SVG 时公式渲染模糊放大后锯齿明显原因SVG 导出时matplotlib 默认将 LaTeX 渲染为位图PNG再嵌入 SVG导致失真。解决启用usetexFalse默认但强制svg.fonttypenone让文本保持矢量import matplotlib as mpl mpl.rcParams[svg.fonttype] none # 关键文本存为 path非 bitmap fig plot_expression(exprsin(x), varx, xlim(0,2*3.14)) fig.savefig(sin.svg, formatsvg) # 此时 SVG 中公式为纯矢量5. 生产级技巧批量生成题目配图、导出交互式 HTML 与性能调优5.1 批量生成用plot_expression_batch()为 100 道函数题一键出图教育类 SaaS 常需为题库自动生成配图。Mathimge_Plot 提供plot_expression_batch()函数接受表达式列表返回Figure对象列表并支持并发加速from mathimge_plot import plot_expression_batch import multiprocessing as mp # 100 道题的表达式模拟 expressions [ fx^{i} - {j} for i in range(2, 6) for j in range(1, 21) ] # 共 4×2080 个补足 100 # 批量绘图n_jobs-1 表示用满 CPU 核心 figures plot_expression_batch( expressionsexpressions, varx, xlim(-2, 2), ylim(-10, 10), n_jobsmp.cpu_count(), # 自动检测核心数 progressTrue # 显示 tqdm 进度条 ) # 保存所有图并行写入磁盘 for i, fig in enumerate(figures): fig.savefig(fproblems/problem_{i1:03d}.png, dpi120, bbox_inchestight)性能关键点n_jobs超过 4 核后收益递减受 matplotlib 后端线程安全限制progressTrue依赖tqdm若未安装会静默忽略批量模式下每张图的figsize统一为(6,4)不可单独指定避免内存碎片5.2 交互式 HTML用to_interactive_html()生成带缩放/拖拽的网页图静态 PNG 无法满足在线学习平台的交互需求。Mathimge_Plot 集成plotly后端需额外安装plotly5.0可将Figure转为交互式 HTML# 先生成 matplotlib Figure fig plot_expression(exprsin(x) 0.5*cos(2*x), varx, xlim(0,4*3.14)) # 转为 Plotly 交互图自动提取数据、样式 from mathimge_plot.export import to_interactive_html html_str to_interactive_html( fig, titleInteractive: sin(x) 0.5cos(2x), width800, height400, include_plotlyjscdn # 从 CDN 加载 JS减小 HTML 体积 ) # 保存为独立 HTML 文件 with open(interactive_plot.html, w, encodingutf-8) as f: f.write(html_str)生成的 HTML 支持鼠标滚轮缩放、拖拽平移悬停显示坐标值x,y图例点击开关曲线右键菜单导出 PNG/SVG注意include_plotlyjscdn要求运行环境能访问外网若内网部署改用include_plotlyjsTrueJS 打包进 HTML体积增大 3MB。5.3 性能调优3 个参数让复杂函数绘图提速 5 倍当绘制exprsin(100*x) exp(-x)*cos(50*x)这类高频振荡函数时默认采样点过多导致卡顿。通过以下参数可精准控速参数默认值说明调优建议adaptive_samplingTrueTrue启用自适应采样曲率大处加密高频函数设为False改用均匀采样n_samples10001000均匀采样点数adaptive_samplingFalse时生效高频函数提至5000避免走样简单函数降至200max_recursion_depth1010自适应采样最大递归深度防无限细分振荡剧烈时增至15但内存占用上升# 高频函数优化示例 fig plot_expression( exprsin(100*x) exp(-x)*cos(50*x), varx, xlim(0, 0.5), adaptive_samplingFalse, # 关闭自适应用均匀采样 n_samples5000, # 加密采样点 ylim(-2, 2) )实测数据i7-11800H, 32GB RAM默认参数sin(100*x)绘图耗时 1.8s上述调优后耗时 0.35s且波形无混叠aliasing最后说个我自己的习惯每次上线新功能前我会用plot_expression_batch()跑一遍 500 个随机生成的表达式含tan,log,sqrt, 分段函数专门测试边界 case。不是为了证明它多 robust而是确保当某位老师在深夜备课时输入1/(x-1)系统不会崩只会安静地画出两条渐近线——这比任何炫技都重要。希望帮到你。本文还有配套的精品资源点击获取

相关新闻

VMwave安装Ubuntu20.04超详细图文教程(附VMwave17.5安装包)

VMwave安装Ubuntu20.04超详细图文教程(附VMwave17.5安装包)

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 9:06:19 阅读更多 →
lol-skins 仓库实战:Dumpling Darlings Amumu 幻彩皮肤包的清单数据与资源结构解读

lol-skins 仓库实战:Dumpling Darlings Amumu 幻彩皮肤包的清单数据与资源结构解读

【免费下载链接】lol-skins Comprehensive collection of League of Legends skins available for custom use. 项目地址: https://gitcode.com/gh_mirrors/lo/lol-skins 点击查看 免费下载 本文以 lol-skins 仓库中 skins/Amumu/chromas/Dumpling Darlings Amumu/…

2026/10/16 9:06:19 阅读更多 →
Audacity 音频编辑器完整指南:从单轨剪辑到批量导出的工作流

Audacity 音频编辑器完整指南:从单轨剪辑到批量导出的工作流

Audacity 音频编辑器完整指南:从单轨剪辑到批量导出的工作流 【免费下载链接】audacity Audio Editor 项目地址: https://gitcode.com/GitHub_Trending/au/audacity Audacity 是一款免费开源的多轨音频编辑器与录音工具,覆盖录音、剪辑、效果处理…

2026/10/16 9:06:19 阅读更多 →

最新新闻

工业AI落地实战:视觉质检、预测维护与工艺优化全解析

工业AI落地实战:视觉质检、预测维护与工艺优化全解析

1. 项目概述:当AI不再是PPT里的概念,而是产线上的“新工人” “他山之石可攻玉”这句老话,放在今天的工厂里,突然有了特别实在的分量。我跟过不下二十家不同规模的制造企业做智能化升级咨询,从长三角的精密零部件厂&am…

2026/10/17 15:01:40 阅读更多 →
三层交换机SVI实现VLAN间路由原理与实操

三层交换机SVI实现VLAN间路由原理与实操

1. 项目概述:为什么三层交换机是VLAN间通信的“默认答案”你手上有几台电脑,分别属于财务部、研发部和行政部,各自在不同的VLAN里——比如VLAN 10、20、30。它们彼此隔离,互ping不通,这是VLAN的基本安全逻辑。但问题来…

2026/10/17 15:01:40 阅读更多 →
RNN与LSTM结构深度拆解:从门控机制到嵌入式部署

RNN与LSTM结构深度拆解:从门控机制到嵌入式部署

1. 项目概述:为什么今天还要认真拆解RNN和LSTM的“老古董”结构?如果你在2024年打开任意一份主流AI岗位JD,大概率会看到“熟悉Transformer架构”被放在显眼位置;而“掌握RNN/LSTM”往往藏在“加分项”甚至“了解即可”的括号里。但…

2026/10/17 15:01:40 阅读更多 →
从RNN到Transformer:注意力机制原理、实现与工程实践全解析

从RNN到Transformer:注意力机制原理、实现与工程实践全解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/17 15:01:40 阅读更多 →
RAG工程实践:从向量检索到大模型回答的完整链路

RAG工程实践:从向量检索到大模型回答的完整链路

先说个我自己的体会。接触AI Agent有一段时间之后,你会发现一个很尴尬的卡点:模型本身再聪明,它对你手头那堆私有资料、最新文档、历史工单是"一无所知"的。靠纯提示词硬灌,塞不了几千字;靠微调,…

2026/10/17 15:01:40 阅读更多 →
codex针对java+vue的Prompt提示词:用TaoToken统一Key跑通前后端联调

codex针对java+vue的Prompt提示词:用TaoToken统一Key跑通前后端联调

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/17 15:00:39 阅读更多 →

日新闻

DeepSeek选型与部署:V3/R1、Ollama、API全攻略

DeepSeek选型与部署:V3/R1、Ollama、API全攻略

简介:《DeepSeek使用方法.pdf》是一份面向DeepSeek入门及进阶用户的完整使用指南,重点围绕V3与R1两款模型的能力差异与适用场景展开,帮助读者根据任务类型与成本选择合适的模型。资源共1个PDF文件,压缩包大小约311KB,篇…

2026/10/17 0:00:25 阅读更多 →
200+Deepseek润色指令拆解:从底层原理到场景落地的完整指南

200+Deepseek润色指令拆解:从底层原理到场景落地的完整指南

简介:这是一份聚焦DeepSeek提示词优化的《200Deepseek润色指令》PDF文档,共收录两百余条可直接套用的润色指令,涵盖语法修正、风格统一、逻辑梳理、表达精炼等维度,并针对商务写作、学术论文、广告文案等场景给出差异化建议。文档…

2026/10/17 0:00:25 阅读更多 →
OpenCV轮廓法物体计数系统:轻量、可控、可落地的工业级实现

OpenCV轮廓法物体计数系统:轻量、可控、可落地的工业级实现

简介:本资源是一份基于OpenCV的本科课程设计完整报告,面向计算机视觉初学者、图像处理学习者及高校通信/信息类专业学生,解决物体智能计数与检测结果结构化记录的实际问题。项目覆盖图像预处理、轮廓检测、边界框绘制、轨迹栏交互式参数调节、…

2026/10/17 0:00:25 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/16 21:35:51 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/17 1:44:59 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/16 15:04:24 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 21:54:38 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 3:49:43 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 14:23:36 阅读更多 →