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

目录

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.hqwc.cn/news/294764.html

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

相关文章

基于JAVA的大病保险管理系统 开源项目

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 系统配置维护2.2 系统参保管理2.3 大病保险管理2.4 大病登记管理2.5 保险审核管理 三、系统详细设计3.1 系统整体配置功能设计3.2 大病人员模块设计3.3 大病保险模块设计3.4 大病登记模块设计3.5 保险审核模块设计 四、…

go语言初体验1--使用go install

当安装后go语言后。 尝试编写go程序。 当使用 go install 命令,报错。 go: go install requires a version when current directory is not in a moduleTry go install jvmgo\ch01latest to install the latest version通过查找资料。 用命令: go env …

用23种设计模式打造一个cocos creator的游戏框架----(二十二)原型模式

1、模式标准 模式名称:原型模式 模式分类:创建型 模式意图:用原型实例指定创建对象的种类,并且通过复制这些原型创建新的对象 结构图: 适用于: 1、当一个系统应该独立于它的产品创建、构成和表示时 2、…

什么是动态代理?

目录 一、为什么需要代理? 二、代理长什么样? 三、Java通过什么来保证代理的样子? 四、动态代理实现案例 五、动态代理在SpringBoot中的应用 导入依赖 数据库表设计 OperateLogEntity实体类 OperateLog枚举 RecordLog注解 上下文相…

基于Springboot的酒店管理系统(有报告)。Javaee项目,springboot项目。

演示视频: 基于Springboot的酒店管理系统(有报告)。Javaee项目,springboot项目。 项目介绍: 采用M(model)V(view)C(controller)三层体系结构&…

C#上位机与欧姆龙PLC的通信05---- HostLink协议

1、介绍 Hostlink协议是欧姆龙PLC与上位机链接的公开协议。上位机通过发送Hostlink命令,可以对PLC进行I/O读写、可以对PLC进行I/O读写、改变操作模式、强制置位/复位等操作。由于是公开协议,即便是非欧姆龙的上位设备(软件)&…

速通Python基础语法--函数篇

目录 一 函数的定义和调用 二 函数的实参和形参 ​编辑 三 函数的返回值 耦合 一个函数中可以有多个return 一次return可以返回多个值 四 全局变量和局部变量 读取 写入 global关键字 其它语句产生的代码块 五 PyCharm调试器观察函数执行 六 函数的链式调用和嵌套…

【prompt一】Domain Adaptation via Prompt Learning

1.Motivation 当前的UDA方法通过对齐源和目标特征空间来学习域不变特征。这种对齐是由诸如统计差异最小化或对抗性训练等约束施加的。然而,这些约束可能导致语义特征结构的扭曲和类可辨别性的丧失。在本文中,引入了一种新的UDA提示学习范式,…

【C语言】指针详解(三)

1.指针运算 指针的基本运算有三种,分别是:⭐指针-整数 ⭐指针-指针 ⭐指针的关系运算 1.1指针 - 整数 因为数组在内存中是连续存放的,只要知道第一个元素的地址,顺藤摸瓜就能找到后面的所有元素。 int arr[10]{1,2,3,4,5,6,7,8,9,10} #inc…

MyBatis增删改查基础及其xml文件

目录 一.增删改查基础 1.增 增Insert 获取自增ID 对insert参数进行重命名 2.删 3.改 4.查 1)对MySQL查询结果进行重命名 从MySQL层面--as 从mybatis层面--Results注解 复用Results的定义 2)配置自动转换驼峰命名(推荐) 二.Mybatis xml配置…

Linux一行命令配置jdk环境

使用方法: 压缩包上传 到/opt, 更换命令中对应的jdk包名即可。 注意点:jdk-8u151-linux-x64.tar.gz 解压后名字是jdk1.8.0_151 sudo tar -zxvf jdk-8u151-linux-x64.tar.gz -C /opt && echo export JAVA_HOME/opt/jdk1.8.0_151 | sudo tee -a …