Rust 语言从入门到实战
唐刚
Rust 语言中文社区联合创始人
5266 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 36 讲
Rust 语言从入门到实战
15
15
1.0x
00:00/00:00
登录|注册

26|Rust GUI编程:用Slint为YOLOv8实现一个界面

你好,我是 Mike。
今天我们继续用 Slint 做一个小项目。这个项目的目标是为我们第 24 讲实现的用 YOLOv8 从图片中识别出对象及姿势的小应用提供一个 GUI 界面。
这个 GUI 程序非常实用,可以以一种真观对比的形式让你看到对原始图片经过 AI 加工后的效果。比如像下面这样:

原理解析

根据我们上节课学到的知识及第 24 讲里的操作流程,我们的实现应该分成 4 步。
选择一张图片,加载显示在界面左边。
点击 “Detect Objects”或 “Detect Poses”。
经过 YOLOv8 引擎计算和标注,生成一张新的图片。
在界面右边加载这张新图片。
下面让我们开始动手操作。
注:这节课的代码适用于 Slint v1.3 版本。

分步骤实现

创建项目

我们还是使用官方提供的 Slint 模板来创建,先下载模板。
cargo generate --git https://github.com/slint-ui/slint-rust-template --name slint-yolov8-demo
cd slint-yolov8-demo
运行 cargo run 测试一下。

设计界面

这个应用其实不复杂,你可以这样来分解这个界面。
从上到下使用一个 VerticalBox,分成三部分:Model 说明、图片显示区、按钮区。
图片显示区使用一个 HorizontalBox,分成三部分:左边图片显示区、中间分隔线、右边图片显示区。图片使用 Image 基础元素来显示。
按钮区,使用 HorizontalBox 排列三个按钮:选择图片、探测对象、探测姿势,并且左对齐。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文介绍了使用Slint为YOLOv8实现一个GUI界面的Rust GUI编程项目。文章首先介绍了项目的目标和原理解析,然后分步实现了项目,包括创建项目、设计界面、设计回调和下载模型。接着,文章详细解析了代码实现部分,包括界面文件的设计和回调函数的实现。通过对界面描述文件的内容进行解析,读者可以了解到如何使用Slint语言来设计GUI界面,并且了解了如何绑定回调函数和操作界面元素。整体而言,本文通过实际的代码实现和解析,为读者提供了一个清晰的Rust GUI编程项目示例,展示了Slint语言的特点和用法。 文章还介绍了如何使用native_dialog crate来实现文件选择功能,并通过channel和后台线程实现了图片处理任务。此外,文章还提到了对YOLOv8工具的改造和模块的目录组织结构。最后,文章总结了Slint GUI框架的特点和Rust在AI领域的潜力,并提出了性能优化问题,鼓励读者分享优化想法和代码。 整体而言,本文内容丰富,涵盖了Rust GUI编程、模块化设计、性能优化等多个方面,对于对Rust GUI编程感兴趣的读者具有很高的参考价值。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《Rust 语言从入门到实战》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(3)

  • 最新
  • 精选
  • Geek_e72251
    老师,怎么给组件添加鼠标右键菜单选项啊?看文档好像没这个功能。

    作者回复: https://slint.dev/releases/1.3.2/docs/slint/src/language/builtins/elements#popupwindow 这里。

    2023-12-24归属地:广东
  • Marco
    老师,用slint如何实现多窗口呢。例如在主窗口点击某个按钮,弹出一个新的窗口

    作者回复: 也许你想要它?https://slint.dev/releases/1.3.2/docs/slint/src/language/builtins/elements#dialog 另外 多窗口特性的进度跟踪在这里:https://github.com/slint-ui/slint/issues/784

    2023-12-23归属地:中国香港
  • My dream
    老师,用slint怎么实现浏览pdf文件啊?

    作者回复: 目前开箱即用的功能还没有,不过理论上来说,就是通过 Image 来画。https://github.com/slint-ui/slint/discussions/1080 再结合 https://docs.rs/pdfium-render/latest/pdfium_render/ 这种渲染库来画到Image上面就行了。 Slint还比较年轻,但是社区发展很快。

    2023-12-22归属地:四川
    2
收起评论
大纲
固定大纲
原理解析
分步骤实现
创建项目
设计界面
显示
设置
留言
3
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部