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

YOLOv12跨平台GUI应用开发:基于Qt框架的检测工具制作

YOLOv12跨平台GUI应用开发基于Qt框架的检测工具制作最近在做一个计算机视觉相关的项目需要频繁使用目标检测模型来测试各种图片和视频。每次都要打开命令行输入一堆参数然后等待结果这个过程实在有点繁琐。特别是当我想快速调整一下检测的灵敏度或者对比不同阈值下的效果时来回切换和修改命令非常影响效率。于是我就想能不能做一个带图形界面的小工具把常用的功能都集成进去点几下鼠标就能完成检测、查看结果、调整参数还能把结果保存下来。更重要的是我希望这个工具能在我的Windows工作电脑、Linux服务器甚至同事的MacBook上都能运行省去为不同系统分别开发的麻烦。经过一番调研和尝试我选择了Qt框架来搭建这个工具。今天我就把这个基于Qt和YOLOv12的跨平台桌面检测工具的开发过程分享出来希望能给有类似需求的朋友一些参考。1. 为什么选择Qt来开发检测工具在决定用哪个框架之前我对比了几个常见的GUI开发选项。比如Python的Tkinter和PyQt还有Electron等。最终选择Qt的C版本主要是基于下面几个考虑。首先跨平台能力是Qt最吸引我的地方。我们团队的工作环境比较杂有Windows、Ubuntu还有macOS。用Qt写的代码基本上只需要编译一次就能在各个系统上运行界面和功能都保持一致。这大大减少了后期维护的成本我不需要为每个系统单独写一套界面逻辑。其次性能表现很关键。目标检测本身是比较耗计算资源的特别是处理视频或者高分辨率图片的时候。如果GUI框架本身太“重”或者效率不高就会拖慢整个应用的响应速度。Qt底层用C实现对系统资源的占用控制得比较好界面渲染也很流畅能和后端的检测引擎很好地配合。再者Qt的界面设计非常灵活和美观。它提供了一套完整的控件库从基本的按钮、文本框到复杂的图表、表格视图都有。通过Qt Designer这个可视化工具我可以像搭积木一样设计界面然后生成对应的代码开发效率很高。而且Qt支持样式表类似CSS可以轻松定制界面的颜色、字体、边框等让工具看起来更专业。最后Qt的生态和文档很完善。遇到问题无论是查官方文档还是在社区里搜索基本上都能找到解决方案。这对于个人开发者或者小团队来说能节省很多摸索的时间。当然用C和Qt开发相比用Python写脚本入门门槛会稍微高一点。但考虑到我们要做的是一个需要长期使用、可能还会不断增加功能的桌面工具前期在架构上多花点功夫是值得的。2. 工具核心功能设计与规划动手写代码之前我先明确了这个小工具需要具备哪些核心功能。我不想把它做得太复杂重点是解决我日常使用中的痛点所以功能设计上以实用为主。第一是灵活的文件输入。工具需要能支持常见的图片格式比如JPG、PNG和视频格式比如MP4、AVI。最好还能支持直接拖拽文件到界面上这种便捷的操作方式。对于视频除了文件我还希望能支持摄像头实时画面的输入这样在做演示或者测试的时候会更方便。第二是直观的结果展示。检测完成后不能只输出一个冷冰冰的文本文件。界面上应该能实时显示加载的图片或视频并且把检测框、类别标签、置信度直接画在画面上。同时旁边最好有一个区域用列表或者表格的形式统计一下本次检测到了哪些物体各自的数量和置信度是多少一目了然。第三是便捷的参数调节。YOLO模型检测时置信度阈值和IOU交并比阈值是两个最常调整的参数。前者决定了模型多“自信”才认为检测到了一个物体后者则用于处理重叠的检测框。我需要能在界面上通过滑动条或者输入框实时调整这两个参数并且立刻看到调整后的检测效果变化。这比修改配置文件再重新运行要直观太多了。第四是实用的结果导出。检测结果除了在界面上看还需要能保存下来。一方面要把带检测框的图片或视频保存成新文件。另一方面最好能生成一份简单的检测报告比如一个文本文件或CSV表格里面记录下检测到的所有目标信息方便后续的整理和分析。基于这些想法我画了一个简单的界面布局草图主区域用来显示媒体内容和检测结果侧边栏放置文件加载按钮、参数调节滑块和结果统计面板底部则安排一些操作按钮比如开始检测、停止、导出等。3. 开发环境搭建与项目初始化工欲善其事必先利其器。第一步就是把开发环境准备好。因为要跨平台我这里以Ubuntu系统为例Windows和macOS的步骤也大同小异。首先需要安装Qt。我选择了Qt 5.15这个长期支持版本比较稳定。可以通过Qt官网的在线安装器来安装记得勾选Qt Creator集成开发环境和你目标平台的编译套件比如Desktop GCC。# 例如在Ubuntu上也可以使用apt安装版本可能较旧 # sudo apt install qt5-default qtcreator接下来是OpenCV。我们的工具需要用它来读取图片、视频进行图像显示和基本的绘图操作。# Ubuntu 安装 OpenCV sudo apt update sudo apt install libopencv-dev然后是深度学习推理框架。YOLOv12的官方实现通常基于PyTorch但为了在C环境中获得更好的性能和控制力我选择了ONNX Runtime。它支持将PyTorch训练好的模型导出为ONNX格式然后在C中高效推理。# 下载ONNX Runtime的Linux发行版 # 可以从GitHub Release页面下载https://github.com/microsoft/onnxruntime/releases # 例如下载 onnxruntime-linux-x64-1.15.1.tgz tar -xzf onnxruntime-linux-x64-*.tgz # 将其中的lib和include目录路径记下来稍后配置项目时需要环境准备好后打开Qt Creator新建一个Qt Widgets Application项目。在项目配置文件.pro文件中我们需要把OpenCV和ONNX Runtime的库和头文件路径加进去。# 在 .pro 文件中的示例配置 QT core gui greaterThan(QT_MAJOR_VERSION, 4): QT widgets # 假设OpenCV通过pkg-config配置 CONFIG link_pkgconfig PKGCONFIG opencv4 # 指定ONNX Runtime的头文件和库路径 (请根据你的实际路径修改) INCLUDEPATH /path/to/onnxruntime-linux-x64-1.15.1/include LIBS -L/path/to/onnxruntime-linux-x64-1.15.1/lib -lonnxruntime项目创建好后我首先设计主界面。使用Qt Designer拖拽出基本的窗口部件一个QLabel用于显示图像/视频几个QPushButton用于控制QSlider和QDoubleSpinBox用于调节参数还有一个QTableWidget用于显示检测结果统计。4. 核心功能模块实现界面搭好架子后接下来就是实现后台的逻辑了。我把核心功能分成了几个模块来开发。4.1 媒体文件加载与显示模块这个模块负责打开用户选择的图片或视频文件并将其内容显示在界面的QLabel上。对于图片直接用OpenCV读取并转换成Qt的QImage格式显示即可。对于视频则需要启动一个定时器不断地从视频流中读取帧并刷新显示。// 示例加载并显示图片的简化代码 void MainWindow::loadImage() { QString fileName QFileDialog::getOpenFileName(this, 选择图片, , Images (*.png *.jpg *.bmp)); if (fileName.isEmpty()) return; cv::Mat cvImage cv::imread(fileName.toStdString()); if (cvImage.empty()) { QMessageBox::warning(this, 错误, 无法加载图片); return; } // 将BGR的OpenCV Mat转换为RGB的QImage cv::cvtColor(cvImage, cvImage, cv::COLOR_BGR2RGB); QImage qImage((uchar*)cvImage.data, cvImage.cols, cvImage.rows, cvImage.step, QImage::Format_RGB888); // 缩放图像以适应显示区域并更新界面 QPixmap pixmap QPixmap::fromImage(qImage); pixmap pixmap.scaled(ui-imageLabel-size(), Qt::KeepAspectRatio, Qt::SmoothTransformation); ui-imageLabel-setPixmap(pixmap); currentImage cvImage.clone(); // 保存原始图像用于检测 }视频和摄像头输入的逻辑类似但需要在一个独立的线程或定时器中循环抓取帧以避免阻塞主界面线程。4.2 YOLOv12模型推理模块这是工具的核心。首先你需要有一个训练好的YOLOv12模型并将其导出为ONNX格式。这个模块的工作就是加载ONNX模型准备输入数据执行推理并解析输出结果。// 示例初始化ONNX Runtime推理会话 bool Detector::loadModel(const std::string modelPath) { Ort::Env env(ORT_LOGGING_LEVEL_WARNING, YOLOv12Detector); Ort::SessionOptions sessionOptions; sessionOptions.SetIntraOpNumThreads(1); // 设置线程数 sessionOptions.SetGraphOptimizationLevel(GraphOptimizationLevel::ORT_ENABLE_ALL); try { session std::make_uniqueOrt::Session(env, modelPath.c_str(), sessionOptions); } catch (const Ort::Exception e) { std::cerr 加载模型失败: e.what() std::endl; return false; } // 获取模型输入输出信息 Ort::AllocatorWithDefaultOptions allocator; inputName session-GetInputName(0, allocator); auto inputShape session-GetInputTypeInfo(0).GetTensorTypeAndShapeInfo().GetShape(); // inputShape 可能是 [-1, 3, 640, 640]表示动态批次、3通道、640x640输入 inputHeight inputShape[2]; inputWidth inputShape[3]; outputName session-GetOutputName(0, allocator); return true; }在检测函数中我们需要将原始的OpenCV图像预处理缩放、归一化、转换通道顺序等成模型需要的输入张量然后运行会话得到输出。YOLO的输出通常包含了大量的候选框我们需要根据置信度阈值和IOU阈值进行过滤非极大值抑制NMS最终得到可靠的检测框和类别。4.3 检测结果可视化与交互模块拿到检测框和类别信息后就需要把它们画到图像上并更新统计面板。我用OpenCV的绘图函数在cv::Mat上画矩形和文字然后再转换回QImage显示。参数调节的交互是提升体验的关键。我将界面上的滑动条QSlider和数值框QDoubleSpinBox的valueChanged信号连接到模型推理模块的阈值设置函数上。这样当用户拖动滑动条时阈值立即改变并触发一次重新检测如果当前有加载的图像或视频帧结果也会实时更新。这种即时反馈让参数调整变得非常直观。4.4 结果导出与报告生成模块这个模块功能相对独立。当用户点击“导出图片”或“导出报告”按钮时触发相应的槽函数。图片/视频导出将画好了检测框的当前帧cv::Mat用cv::imwrite保存到指定路径。对于视频则需要用OpenCV的VideoWriter将处理后的每一帧写入新文件。报告生成我将每次检测的结果帧序号、目标类别、置信度、边框坐标存储在一个数据结构里比如std::vectorDetectionResult。当需要生成报告时遍历这个结构将数据格式化成字符串写入文本文件或者用逗号分隔写成CSV格式方便用Excel打开分析。// 示例生成简单文本报告 void MainWindow::exportReport() { QString fileName QFileDialog::getSaveFileName(this, 保存报告, detection_report.txt, Text Files (*.txt)); if (fileName.isEmpty()) return; QFile file(fileName); if (!file.open(QIODevice::WriteOnly | QIODevice::Text)) { QMessageBox::warning(this, 错误, 无法创建报告文件); return; } QTextStream out(file); out YOLOv12 检测报告\n; out 生成时间: QDateTime::currentDateTime().toString() \n\n; out 序号\t类别\t置信度\tX\tY\t宽度\t高度\n; int index 1; for (const auto det : latestDetectionResults) { out index \t det.className \t QString::number(det.confidence, f, 2) \t det.bbox.x \t det.bbox.y \t det.bbox.width \t det.bbox.height \n; } file.close(); QMessageBox::information(this, 成功, 报告已生成); }5. 跨平台编译与部署心得功能开发完成后最后一步就是让它在不同系统上都能跑起来。Qt的跨平台特性在这里发挥了巨大优势大部分代码都不需要改动。在Linux上直接使用Qt Creator编译即可。需要注意确保所有动态链接库.so文件比如OpenCV和ONNX Runtime的库都在系统的链接路径中或者和可执行文件放在同一目录下。在Windows上我用的是MSVC编译器。步骤类似在Qt Creator中配置好Kit选择MSVC编译套件。主要的区别在于第三方库的获取。OpenCV和ONNX Runtime都需要下载为Windows预编译好的版本通常是.dll和.lib文件。在.pro文件中需要正确指定这些库的路径Windows下路径使用反斜杠或双正斜杠。编译完成后记得将程序运行所依赖的.dll文件Qt的、OpenCV的、ONNX Runtime的复制到可执行文件旁边或者加入到系统Path环境变量中。在macOS上环境通常用Homebrew来管理。通过brew install qt5 opencv onnxruntime可以方便地安装依赖。然后在Qt Creator中配置使用Clang编译器。macOS的应用程序通常打包成.app的BundleQt Creator在编译Release版本时可以帮你完成初步的打包但可能需要手动使用macdeployqt工具来确保所有Qt库都被正确复制到Bundle内。为了让分发更简单我通常会为每个平台写一个简单的脚本用来收集所有必需的依赖库并和可执行文件一起打包成一个文件夹。这样用户拿到后直接运行里面的程序文件就可以了不需要自己再去配置复杂的环境。6. 总结回过头来看用Qt来开发这样一个YOLOv12的桌面检测工具整个过程还是比较顺畅的。Qt框架的成熟度很高界面开发效率不错跨平台的能力也实实在在解决了我们多环境部署的痛点。工具做出来之后团队里的同事不管用什么系统都能直接使用测试和演示的效率提高了很多。当然这个工具还有很多可以完善的地方。比如可以加入模型管理功能让用户能方便地切换不同的YOLO模型v12, v11, v10等可以增加批量处理图片的功能或者把检测历史记录保存下来方便回溯和比较。这些都可以作为后续迭代的方向。如果你也在为频繁使用命令行检测模型而烦恼不妨试试用Qt自己动手做一个GUI工具。它不一定需要多么复杂的功能关键是能贴合你自己的 workflow解决实际的问题。从简单的文件加载、结果显示做起慢慢添加需要的功能这个过程本身也是学习和积累经验的好机会。获取更多AI镜像想探索更多AI镜像和应用场景访问 CSDN星图镜像广场提供丰富的预置镜像覆盖大模型推理、图像生成、视频生成、模型微调等多个领域支持一键部署。

相关文章:

YOLOv12跨平台GUI应用开发:基于Qt框架的检测工具制作

YOLOv12跨平台GUI应用开发:基于Qt框架的检测工具制作 最近在做一个计算机视觉相关的项目,需要频繁使用目标检测模型来测试各种图片和视频。每次都要打开命令行,输入一堆参数,然后等待结果,这个过程实在有点繁琐。特别…...

linux下Cmake和vscode的配置

C 环境安装:sudo apt update sudo apt install build-essential gdb sudo apt install cmakegcc --version g --version gdb --version cmake --versionC/C Themes CMake 写CMakeLists.txt能提示 {// 使用 IntelliSense 了解相关属性。 // 悬停以查看现有属性的描述。// 欲了…...

深入解析Dify的RAG文件处理流程:从上传到索引构建

1. Dify平台RAG文件处理流程全景图 当你把一份PDF或Word文档拖进Dify平台时,背后其实启动了一个精密的文档处理流水线。这个流程就像快递分拣中心的自动化系统——文件先被拆包验货,然后按规则分拣,最后贴上专属标签存入智能货架。作为开发者…...

如何用稳定扩散阿卡西记录释放AI绘画的无限潜能:完整指南

如何用稳定扩散阿卡西记录释放AI绘画的无限潜能:完整指南 【免费下载链接】sd-akashic 项目地址: https://gitcode.com/gh_mirrors/sd/sd-akashic 稳定扩散阿卡西记录(sd-akashic)是一个强大的开源项目,它为AI绘画爱好者和…...

Qwen3-TTS-12Hz-1.7B-VoiceDesign C++接口开发:高性能语音合成引擎封装

Qwen3-TTS-12Hz-1.7B-VoiceDesign C接口开发:高性能语音合成引擎封装 1. 引言 语音合成技术正在快速发展,而Qwen3-TTS-12Hz-1.7B-VoiceDesign作为阿里云推出的先进语音生成模型,为开发者提供了强大的声音设计和控制能力。虽然官方提供了Pyt…...

小白也能搞定的AI换脸:科哥UNet镜像快速上手,效果超自然

小白也能搞定的AI换脸:科哥UNet镜像快速上手,效果超自然 1. 引言:AI换脸原来这么简单 你是否曾经想过把自己的脸放到喜欢的电影角色上?或者想看看自己换个发型、妆容会是什么样子?现在,这些想法都可以通过…...

Tufte CSS终极字体配置指南:ET Book字体的完整使用方法详解

Tufte CSS终极字体配置指南:ET Book字体的完整使用方法详解 【免费下载链接】tufte-css Style your webpage like Edward Tufte’s handouts. 项目地址: https://gitcode.com/gh_mirrors/tu/tufte-css 想要为你的网站实现Edward Tufte标志性的优雅排版吗&…...

手把手教你用YOLO-v8.3:从零搭建零售货架识别系统

手把手教你用YOLO-v8.3:从零搭建零售货架识别系统 1. 项目背景与价值 零售行业每天面临着一个共同的挑战:如何高效准确地管理货架商品。传统的人工盘点方式不仅耗时费力,而且容易出错。想象一下,一家中型超市每天需要花费3-4小时…...

scikit-opt免疫算法终极指南:生物启发式优化原理与实战应用

scikit-opt免疫算法终极指南:生物启发式优化原理与实战应用 【免费下载链接】scikit-opt Genetic Algorithm, Particle Swarm Optimization, Simulated Annealing, Ant Colony Optimization Algorithm,Immune Algorithm, Artificial Fish Swarm Algorithm, Differen…...

SpringBoot 集成 TrueLicense 实现动态许可证管理与安全验证

1. TrueLicense基础与SpringBoot集成概述 在商业软件开发中,许可证管理是保护知识产权的关键环节。TrueLicense作为Java生态中成熟的证书管理框架,通过非对称加密技术实现软件授权验证。我曾在多个企业级项目中采用SpringBoot集成TrueLicense的方案&…...

C#毕业设计下载(全套源码+配套论文)——基于C#+asp.net+sqlserver的教务管理平台设计与实现

基于C#asp.netsqlserver的教务管理平台设计与实现(毕业论文程序源码) 大家好,今天给大家介绍基于C#asp.netsqlserver的教务管理平台设计与实现,更多精选毕业设计项目实例见文末哦。 文章目录: 基于C#asp.netsqlserve…...

如何快速解决Spyc YAML解析器的10个常见问题:PHP开发者的完整指南

如何快速解决Spyc YAML解析器的10个常见问题:PHP开发者的完整指南 【免费下载链接】spyc A simple YAML loader/dumper class for PHP 项目地址: https://gitcode.com/gh_mirrors/sp/spyc Spyc是一个简单易用的PHP YAML加载器/转储器类,专为处理Y…...

Freetronics LCD库深度解析与STM32移植指南

1. Freetronics 162 LCD 库技术解析与工程实践指南Freetronics 162 LCD Shield 是一款面向 Arduino 生态的硬件扩展板,采用 HD44780 兼容控制器驱动双行 16 字符液晶显示屏,并集成 5 按键(上、下、左、右、选择)与电位器调光电路。…...

企业微信直播回放下载全攻略:从网页源码到火狐插件,手把手教你搞定

企业微信直播回放高效下载指南:多平台解决方案与实战技巧 企业微信作为职场沟通的重要工具,其直播功能被广泛应用于内部培训、会议记录和在线教学等场景。但官方并未直接提供直播回放的下载入口,这让许多需要存档重要内容的用户感到困扰。本…...

从波形图解密AHB协议:手把手分析INCR4/WRAP8突发传输时序

从波形图解密AHB协议:手把手分析INCR4/WRAP8突发传输时序 在数字IC验证领域,AHB协议作为AMBA总线家族的核心成员,其突发传输机制一直是工程师必须掌握的硬核技能。本文将带您以"示波器视角"切入,通过INCR4递增突发和WRA…...

modern-normalize样式覆盖优先级终极指南:避免CSS冲突的10个技巧

modern-normalize样式覆盖优先级终极指南:避免CSS冲突的10个技巧 【免费下载链接】modern-normalize 🐒 Normalize browsers default style 项目地址: https://gitcode.com/gh_mirrors/mo/modern-normalize modern-normalize是一款轻量级的CSS重置…...

Python最好用的爬虫框架推荐!

Python爬虫框架能大幅降低数据采集的开发成本,不同框架适配不同的爬取场景。很多开发者入门时不知该选哪个框架,本文推荐8个最高效的Python爬虫框架,快来了解一下吧。1.ScrapyScrapy是一个为了爬取网站数据,提取结构性数据而编写的…...

深度实践指南:如何高效使用DataHub GraphQL进行元数据管理

深度实践指南:如何高效使用DataHub GraphQL进行元数据管理 【免费下载链接】datahub The Metadata Platform for the Modern Data Stack 项目地址: https://gitcode.com/GitHub_Trending/da/datahub DataHub是现代数据栈的元数据平台,其GraphQL A…...

TradingAgents-CN:三步打造你的专属AI金融交易军师

TradingAgents-CN:三步打造你的专属AI金融交易军师 【免费下载链接】TradingAgents-CN 基于多智能体LLM的中文金融交易框架 - TradingAgents中文增强版 项目地址: https://gitcode.com/GitHub_Trending/tr/TradingAgents-CN 想象一下,你面对复杂的…...

深度学习迁移学习实战指南:基于SqueezeNet的热狗识别系统

深度学习迁移学习实战指南:基于SqueezeNet的热狗识别系统 【免费下载链接】mxnet-the-straight-dope An interactive book on deep learning. Much easy, so MXNet. Wow. [Straight Dope is growing up] ---> Much of this content has been incorporated into t…...

Apollo监听器用不好?从源码看ConfigChangeListener的注册、触发与线程安全那些事

Apollo监听器深度解析:从源码透视ConfigChangeListener的设计哲学与实战陷阱 在分布式配置中心领域,Apollo凭借其高可靠性、实时推送能力和完善的监听机制,已成为众多企业微服务架构中的标配组件。然而,许多中高级开发者在实际使用…...

别再只会写RCA了!FPGA实战:用Verilog手撕超前进位加法器(LCA)的完整代码与性能对比

从RCA到LCA:FPGA工程师必备的超前进位加法器实战指南 在数字电路设计中,加法器是最基础却又最关键的运算单元之一。很多刚接触Verilog的工程师会满足于实现一个能用的行波进位加法器(RCA),但当项目频率提升到200MHz以上…...

基于微信小程序实现助农扶贫管理系统【附项目源码+论文说明】计算机毕业设计

基于java和微信小程序实现助农扶贫系统演示【内附项目源码LW说明】摘要 由于APP软件在开发以及运营上面所需成本较高,而用户手机需要安装各种APP软件,因此占用用户过多的手机存储空间,导致用户手机运行缓慢,体验度比较差&#xf…...

别再只盯着开关速度了!用TC4420驱动MOSFET,实测这几种波形才是效率杀手

别再只盯着开关速度了!用TC4420驱动MOSFET,实测这几种波形才是效率杀手 在实验室调试电源模块时,你是否遇到过这样的场景:明明选用了低导通电阻的MOSFET,计算出的理论效率高达95%,但实测却始终徘徊在88%左右…...

戴尔服务器按Ctrl+R没反应?别急,先检查BIOS里的这个Boot Mode设置

戴尔服务器CtrlR失效深度排查:从Boot Mode到RAID配置的完整指南 当戴尔服务器的CtrlR组合键失去响应时,许多运维人员的第一反应是反复尝试或怀疑硬件故障。但真相往往藏在更深层的系统配置中——UEFI与Legacy BIOS启动模式的差异直接决定了RAID配置入口…...

Python实战:3种方法加速破解RAR密码(附完整代码)

Python高效破解RAR密码的3种实战方案 当遇到加密的RAR文件却忘记密码时,许多开发者会寻求自动化破解方案。传统暴力破解方法效率低下,本文将分享三种经过优化的Python实现方案,帮助你在不同场景下快速完成任务。 1. 基础准备与环境配置 在开始…...

老显卡如何焕发第二春?OptiScaler让游戏帧率提升30-50%的实战指南

老显卡如何焕发第二春?OptiScaler让游戏帧率提升30-50%的实战指南 【免费下载链接】OptiScaler DLSS replacement for AMD/Intel/Nvidia cards with multiple upscalers (XeSS/FSR2/DLSS) 项目地址: https://gitcode.com/GitHub_Trending/op/OptiScaler 当你…...

从Alpha158因子库的实战计算到高效缓存策略

1. Alpha158因子库的核心价值与计算挑战 在量化金融领域,因子库的质量直接决定了策略的盈利能力。微软Qlib框架内置的Alpha158因子库,包含了158个经过验证的量化因子,覆盖了量价、财务、市场情绪等多个维度。这些因子就像厨师手中的调味料&am…...

利用EVA-02重构技术文档:将零散笔记整理成结构化开发手册

利用EVA-02重构技术文档:将零散笔记整理成结构化开发手册 你有没有过这样的经历?项目进行到一半,想回顾一下某个功能的实现细节,结果发现相关的信息散落在十几个不同的地方:几行代码注释在一个文件里,关键…...

终极指南:如何为Dinero.js开源货币库贡献专业文档

终极指南:如何为Dinero.js开源货币库贡献专业文档 【免费下载链接】dinero.js Create, calculate, and format money in JavaScript and TypeScript. 项目地址: https://gitcode.com/gh_mirrors/di/dinero.js Dinero.js是一个功能强大的JavaScript和TypeScri…...