qt项目-《图像标注软件》源码阅读笔记-类图

news2024/10/3 8:29:47

目录

1. 开源项目链接

2. 项目界面

3. 项目类图

3.1 形状的绘制及形状的存储

3.2 主窗口中心组件的界面管理

3.3 Command负责实现撤销和重做功能

3.4 其他类

3.5 枚举

3.5.1 Status 主窗口的状态变量

3.5.2  Mode 主窗口模式状态变量

3.5.3 shapeStatus 中心组件状态

3.5.4 syncStatus 3d组件对label3d的统一接口中同步状态变量


1. 开源项目链接

GitHub - jameslahm/labelme: A image annotation software for 2D or 3D images

2. 项目界面

3. 项目类图

3.1 形状的绘制及形状的存储

负责形状的绘制及形状的存储

  • Brush代表画刷形状,用于分割标注;
  • Rectangle代表矩形形状;
  • Polygons代表多边形形状;
  • Circle代表圆形形状;
  • Curve代表平滑曲线形状;
  • Rectangle3D代表3d长方体形状;
  • Brush3D代表3d画刷形状,用于3d分割标注。

3.2 主窗口中心组件的界面管理

CentralWidget类负责主窗口中心组件的界面初始化以及后续中心组件的管理。
其两个派生类分别负责2D、3D中心组件,
2d和3d的模式可以进行切换。

  • 内部的绘画以及标注相关的动作交由Label类(或Label3D类)进行处理;
  • 命令的撤销和重做交由Command2D类(或Command3D)进行处理;
  • 标注文件的解析和存储,以及3D图片系列文件的解析均交由Parse类进行处理。

3.3 Command负责实现撤销和重做功能

Command是命令栈基类,用来实现撤销和重做功能,有6个虚函数;

子类Command2D和Command3D实现这6个虚函数;

  • logAdd:记录添加标注;
  • logDelete:记录删除标注;
  • logMove:记录移动标注;
  • logChange:记录更改标注;
  • undo:撤销功能;
  • redo:重做功能。

3.4 其他类

3.5 枚举

软件总共有4个枚举类型。

3.5.1 Status 主窗口的状态变量

enum Status {Edit,Focus,Create}; 

总共3个状态。

  • edit为默认状态,此时处于编辑标注的状态;
  • focus为选中状态,表明此时有标注被选中,可以进行响应的操作;
  • create为创建标注状态,表明此时正在创建标注.

3.5.2  Mode 主窗口模式状态变量

enum Mode {TwoD,ThreeD}; 
  • TwoD代表处于2d状态;
  • ThreeD代表处于3d状态

3.5.3 shapeStatus 中心组件状态

enum shapeStatus {BrushShape,PolygonsShape,RectangleShape,CircleShape,CurveShape,NoShape,InShape};

总共7个状态。 

  • noshape表明此时鼠标不在标注形状内部,且不在创建状态;
  • inshape表明此时鼠标在标注形状内部;
  • brushshape表明此时处于创建画刷状态,(分割标注);
  • rectangleshape表明此时处于绘制矩形状态;
  • circleshape表明处于创建圆形状态;
  • polygonsshape表明处于创建多边形状态;
  • curveshape表明处于创建平滑曲线状态.

3.5.4 syncStatus 3d组件对label3d的统一接口中同步状态变量

enum syncStatus {AddShape,AddPoint,Selected,Remove,UnSelected,ChangePoint,ShowMessage,Hovered,UnHovered,Offset};

总共10个状态。

  • addshape表明添加标注形状;
  • addpoint表明添加像素点;
  • selected表明选中;
  • unselected表明未选中;
  • remove表明移除正在创建的形状;
  • changepoint表明更改正在绘制的像素点;
  • showmessage表明显示鼠标坐标;
  • hovered表明鼠标在该标注形状内;
  • unhovered表明鼠标已不在该标注形状内;
  • offset表明偏移标注位置

 

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

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

相关文章

前菜---二叉树+堆的小练习

目录 前言🏜️ 1. 二叉树性质总结⛱️ 1.2 性质3⏰ 2. 二叉树性质小练习🏕️ 3. 答案解析💡 4. 堆概念结构小练习🪔 5. 答案解析🧿 6. 前/中/后/层序遍历小练习🔫 7. 答案解析🧺 后语…

MySQL主从架构及读写分离实战

​​​​​​ 目录 一、实验目的与环境 二、基础环境介绍 三、搭建主从集群 1、理论基础 2、同步的原理 3、搭建主从集群 3.1 配置master主服务器 3.2 配置slave从服务 3.3 主从集群测试 3.4 集群搭建扩展: 3.5、GTID同步集群 4、集群扩容 5、半同步复…

Nessus详细安装-windows (保姆级教程)

Nessus描述 Nessus 是一款广泛使用的网络漏洞扫描工具。它由 Tenable Network Security 公司开发,旨在帮助组织评估其计算机系统和网络的安全性。 Nessus 可以执行自动化的漏洞扫描,通过扫描目标系统、识别和评估可能存在的安全漏洞和弱点。它可以检测…

【数据结构入门精讲 | 第十七篇】一文讲清图及各类图算法

在上一篇中我们进行了的并查集相关练习,在这一篇中我们将学习图的知识点。 目录 概念深度优先DFS伪代码 广度优先BFS伪代码 最短路径算法(Dijkstra)伪代码 Floyd算法拓扑排序逆拓扑排序 概念 下面介绍几种在对图操作时常用的算法。 深度优先D…

【数据结构入门精讲 | 第十四篇】散列表知识点及考研408、企业面试练习(1)

在上一篇中我们进行了树的专项练习,在这一篇中我们将进行散列表知识点的学习。 目录 概念伪代码线性探测法平方探测法查找成功的平均查找长度查找失败的平均查找长度判断题选择题 概念 散列表(Hash Table),也被称为哈希表或散列映…

CogAgent:带 Agent 能力的视觉模型来了

之前我们分享过智谱AI新一代多模态大模型 CogVLM,该模型在不牺牲任何 NLP 任务性能的情况下,实现视觉语言特征的深度融合,其中 CogVLM-17B 在 14 个多模态数据集上取得最好或者第二名的成绩。 12月15日,基于 CogVLM,提…

【小沐学写作】Docsify制作在线电子书、技术文档(Docsify + Markdown + node)

文章目录 1、简介2、安装2.1 node2.2 docsify-cli 3、配置3.1 初始化3.2 预览效果3.3 加载对话框3.4 更多页面3.5 侧 栏3.6 自定义导航栏 结语 1、简介 https://docsify.js.org/#/?iddocsify 一个神奇的文档网站生成器。 简单轻巧没有静态构建的 html 文件多个主题 Docsify…

第11章 GUI Page426~427 步骤七 设置直线前景色

运行效果&#xff1a; 关键代码&#xff1a; 接口类 IItem中新增29,30行两个设置前景色纯虚方法 //item_i.hpp 抽象“图形元素”接口定义 #ifndef ITEM_I_HPP_INCLUDED #define ITEM_I_HPP_INCLUDED#include <wx/gdicmn.h> #include <wx/dc.h>class IItem { publ…

Matlab论文插图绘制模板第132期—函数等高线填充图

在之前的文章中&#xff0c;分享了Matlab函数折线图的绘制模板&#xff1a; 函数三维折线图&#xff1a; 函数网格曲面图&#xff1a; 函数曲面图&#xff1a; 函数等高线图&#xff1a; 进一步&#xff0c;再来分享一下函数等高线填充图。 先来看一下成品效果&#xff1a; 特…

HP笔记本电脑进入BIOS的方法主要有两种,它们使用场合不同

BIOS&#xff08;基本输入输出系统&#xff09;是一种实用程序&#xff0c;它在你按下电源按钮后启动并加载操作系统。无论是要更新HP笔记本电脑的BIOS系统&#xff0c;还是清除前一个系统中的错误&#xff0c;第一步都是进入BIOS实用程序。 在按键输入BIOS设置并对其进行修改…

Hadoop入门学习笔记——三、使用HDFS文件系统

视频课程地址&#xff1a;https://www.bilibili.com/video/BV1WY4y197g7 课程资料链接&#xff1a;https://pan.baidu.com/s/15KpnWeKpvExpKmOC8xjmtQ?pwd5ay8 Hadoop入门学习笔记&#xff08;汇总&#xff09; 目录 三、使用HDFS文件系统3.1. 使用命令操作HDFS文件系统3.1.…

【5G PHY】NR参考信号功率和小区总传输功率的计算

博主未授权任何人或组织机构转载博主任何原创文章&#xff0c;感谢各位对原创的支持&#xff01; 博主链接 本人就职于国际知名终端厂商&#xff0c;负责modem芯片研发。 在5G早期负责终端数据业务层、核心网相关的开发工作&#xff0c;目前牵头6G算力网络技术标准研究。 博客…

Vue3 性能优化

代码分析 由于我们使用的是vite vite打包是基于rollup 的我们可以使用 rollup 的插件 npm install rollup-plugin-visualizervite.config.ts 配置 记得设置open 不然无效 import { visualizer } from rollup-plugin-visualizer; plugins: [vue(), vueJsx(),visualizer({open:…

【Java探索之旅】我与Java的初相识(完):注释,标识符,关键字

&#x1f3a5; 屿小夏 &#xff1a; 个人主页 &#x1f525;个人专栏 &#xff1a; Java入门到精通 &#x1f304; 莫道桑榆晚&#xff0c;为霞尚满天&#xff01; 文章目录 &#x1f4d1;前言一. Java的注释方式二. 标识符三. 关键字四. 全篇总结 &#x1f4d1;前言 在Java编程…

1856_emacs_calc使用介绍与故事

Grey 全部学习内容汇总&#xff1a; GitHub - GreyZhang/g_org: my learning trip for org-mode 1856_emacs_calc使用介绍与故事 calc是emacs内置的一个计算器&#xff0c;可以提供多种计算表达方式并且可以支持org-mode中的表格功能。 主题由来介绍 我是因为想要了解org-…

nodejs微信小程序+python+PHP医疗机构药品及耗材信息管理系统-计算机毕业设计推荐

目 录 摘 要 I ABSTRACT II 目 录 II 第1章 绪论 1 1.1背景及意义 1 1.2 国内外研究概况 1 1.3 研究的内容 1 第2章 相关技术 3 2.1 nodejs简介 4 2.2 express框架介绍 6 2.4 MySQL数据库 4 第3章 系统分析 5 3.1 需求分析 5 3.2 系统可行性分析 5 3.2.1技术可行性&#xff1a;…

3 个适用于 Mac 电脑操作的 Android 数据恢复最佳工具 [附步骤]

在当今的数字时代&#xff0c;无论是由于意外删除、系统故障还是其他原因&#xff0c;从 Android 设备中丢失数据不仅会带来不便&#xff0c;而且会造成非常严重的后果。特别是对于Mac用户来说&#xff0c;从Android手机恢复数据是一个很大的麻烦。幸运的是&#xff0c;随着许多…

如何利用PPT绘图并导出清晰图片

在写论文的过程中&#xff0c;免不了需要绘图&#xff0c;但是visio等软件绘图没有在ppt上绘图比较熟练&#xff0c;尤其流程图结构图. 但是ppt导出的图片也不够清晰&#xff0c;默认分辨率是96dpi&#xff0c;而杂志投稿一般要求至300dpi。解决办法如下&#xff1a; 1.打开注…

一款超好看流行的HTML随机视频播放背景引导页面源码

前言 今天宋佳乐博客给大家带来一款2024新版视频背景网址导航引导页面源码带背景动态HTML源码 源码介绍 2024新版视频背景网址导航引导页面源码带背景动态HTML源码&#xff0c;非常的炫酷&#xff0c;有需要的自行去体验吧&#xff0c;还是非常不错的 演示地址&#xff1a;点…

【随想】每日两题Day.22

题目&#xff1a;102. 二叉树的层序遍历 给你二叉树的根节点 root &#xff0c;返回其节点值的 层序遍历 。 &#xff08;即逐层地&#xff0c;从左到右访问所有节点&#xff09;。 示例 1&#xff1a; 输入&#xff1a;root [3,9,20,null,null,15,7] 输出&#xff1a;[[3],[…