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. 项目界面

qt项目-《图像标注软件》源码阅读笔记-类图_第1张图片

3. 项目类图

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

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

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

qt项目-《图像标注软件》源码阅读笔记-类图_第2张图片

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

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

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

qt项目-《图像标注软件》源码阅读笔记-类图_第3张图片

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

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

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

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

qt项目-《图像标注软件》源码阅读笔记-类图_第4张图片

3.4 其他类

qt项目-《图像标注软件》源码阅读笔记-类图_第5张图片

3.5 枚举

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

qt项目-《图像标注软件》源码阅读笔记-类图_第6张图片

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表明偏移标注位置

 

你可能感兴趣的:(qt,笔记)