Full Code of lanbing510/ImageLabel for AI

master 849716a17d45 cached
14 files
84.9 KB
22.7k tokens
9 symbols
1 requests
Download .txt
Repository: lanbing510/ImageLabel
Branch: master
Commit: 849716a17d45
Files: 14
Total size: 84.9 KB

Directory structure:
gitextract_xq1sfgw6/

├── README.md
├── released/
│   ├── history.ini
│   └── set.ini
└── src/
    ├── Label.pro
    ├── Label.pro.user
    ├── Label.pro.user.61d9454
    ├── Label.pro.user.722262d
    ├── main.cpp
    ├── mainwindow.cpp
    ├── mainwindow.h
    ├── mainwindow.ui
    ├── setparameterdialog.cpp
    ├── setparameterdialog.h
    └── setparameterdialog.ui

================================================
FILE CONTENTS
================================================

================================================
FILE: README.md
================================================
# 图像标注工具
前段时间由于工作需要对图像中目标进行像素级标注,自己写的小工具,在此分享给大家

###环境:

QT+Opencv实现

###实现功能:

1 标注任意格式的图像

2 可手动绘制轮廓进行标注

3 可利用GrabCut进行半自动标注

4 支持Hull类型及Poly类型多种轮廓

5 支持各种后退重做等快捷键功能

6 可记录标注进度及标注所用时间

软件截图如下:

<img src="https://github.com/lanbing510/Label/raw/master/screenshots/label.png" width="60%" height="50%">

左侧第一个目标为GrabCut进行标注的示例,第二个为手动标注的结果


###快捷键说明:

1 CTRL+S Save,保存标注的图像

2 CTRL+R Redo,重新进行标注

3 CTRL+U Undo,后退一步

4 手动模式下,鼠标左键进行轮廓绘制,鼠标中键也可进行后退一步的操作,绘制完成后右键进行填充完成

5 自动模式下,鼠标左键直接在目标周围拖出一个矩形-->右键-->Ctrl+右键进行轮廓绘制-->Ctrl+右键填充;为了更精确的提取轮廓,可为GrabCut提供更多的信息:Shift+左键: GC_FG,Ctrl+左键: GC_BG,Alt+左键: GC_PR_FG,LeftClick: GC_PR_BG,参数相关信息可以查阅Opencv文档




================================================
FILE: released/history.ini
================================================


================================================
FILE: released/set.ini
================================================
SequencePath=E:\Research\HP\Data\VIVID\egtest04_bmp
FileFormat=frame%.5d.bmp
OutputPath=E:\Research\HP\Data\Labeled\egtest04
StartFrame=0


================================================
FILE: src/Label.pro
================================================
#-------------------------------------------------
#
# Project created by QtCreator 2015-04-02T15:13:39
#
#-------------------------------------------------

QT       += core gui

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

TARGET = Label
TEMPLATE = app


SOURCES += main.cpp\
        mainwindow.cpp \
    setparameterdialog.cpp

HEADERS  += mainwindow.h \
    setparameterdialog.h

FORMS    += mainwindow.ui \
    setparameterdialog.ui

INCLUDEPATH +=  D:/Libraries/opencv249/build/include/ \
                D:/Libraries/opencv249/build/include/opencv

LIBS += -LD:/Libraries/opencv249/build/x64/vc12/lib \
        -LD:/Libraries/opencv249/build/x64/vc12/bin \
        -lopencv_calib3d249 \
        -lopencv_contrib249 \
        -lopencv_core249 \
        -lopencv_features2d249 \
        -lopencv_flann249 \
        -lopencv_gpu249 \
        -lopencv_highgui249 \
        -lopencv_imgproc249 \
        -lopencv_legacy249 \
        -lopencv_ml249 \
        -lopencv_nonfree249 \
        -lopencv_objdetect249 \
        -lopencv_ocl249 \
        -lopencv_photo249 \
        -lopencv_stitching249 \
        -lopencv_superres249 \
        -lopencv_ts249 \
        -lopencv_video249 \
        -lopencv_videostab249 \


================================================
FILE: src/Label.pro.user
================================================
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE QtCreatorProject>
<!-- Written by QtCreator 3.3.0, 2015-08-05T17:58:19. -->
<qtcreator>
 <data>
  <variable>EnvironmentId</variable>
  <value type="QByteArray">{dbd1f9ef-49c6-4a07-a222-5d5c8e36393a}</value>
 </data>
 <data>
  <variable>ProjectExplorer.Project.ActiveTarget</variable>
  <value type="int">0</value>
 </data>
 <data>
  <variable>ProjectExplorer.Project.EditorSettings</variable>
  <valuemap type="QVariantMap">
   <value type="bool" key="EditorConfiguration.AutoIndent">true</value>
   <value type="bool" key="EditorConfiguration.AutoSpacesForTabs">false</value>
   <value type="bool" key="EditorConfiguration.CamelCaseNavigation">true</value>
   <valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.0">
    <value type="QString" key="language">Cpp</value>
    <valuemap type="QVariantMap" key="value">
     <value type="QByteArray" key="CurrentPreferences">CppGlobal</value>
    </valuemap>
   </valuemap>
   <valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.1">
    <value type="QString" key="language">QmlJS</value>
    <valuemap type="QVariantMap" key="value">
     <value type="QByteArray" key="CurrentPreferences">QmlJSGlobal</value>
    </valuemap>
   </valuemap>
   <value type="int" key="EditorConfiguration.CodeStyle.Count">2</value>
   <value type="QByteArray" key="EditorConfiguration.Codec">UTF-8</value>
   <value type="bool" key="EditorConfiguration.ConstrainTooltips">false</value>
   <value type="int" key="EditorConfiguration.IndentSize">4</value>
   <value type="bool" key="EditorConfiguration.KeyboardTooltips">false</value>
   <value type="int" key="EditorConfiguration.MarginColumn">80</value>
   <value type="bool" key="EditorConfiguration.MouseHiding">true</value>
   <value type="bool" key="EditorConfiguration.MouseNavigation">true</value>
   <value type="int" key="EditorConfiguration.PaddingMode">1</value>
   <value type="bool" key="EditorConfiguration.ScrollWheelZooming">true</value>
   <value type="bool" key="EditorConfiguration.ShowMargin">false</value>
   <value type="int" key="EditorConfiguration.SmartBackspaceBehavior">0</value>
   <value type="bool" key="EditorConfiguration.SpacesForTabs">true</value>
   <value type="int" key="EditorConfiguration.TabKeyBehavior">0</value>
   <value type="int" key="EditorConfiguration.TabSize">8</value>
   <value type="bool" key="EditorConfiguration.UseGlobal">true</value>
   <value type="int" key="EditorConfiguration.Utf8BomBehavior">1</value>
   <value type="bool" key="EditorConfiguration.addFinalNewLine">true</value>
   <value type="bool" key="EditorConfiguration.cleanIndentation">true</value>
   <value type="bool" key="EditorConfiguration.cleanWhitespace">true</value>
   <value type="bool" key="EditorConfiguration.inEntireDocument">false</value>
  </valuemap>
 </data>
 <data>
  <variable>ProjectExplorer.Project.PluginSettings</variable>
  <valuemap type="QVariantMap"/>
 </data>
 <data>
  <variable>ProjectExplorer.Project.Target.0</variable>
  <valuemap type="QVariantMap">
   <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Desktop Qt 5.4.0 MSVC2013 OpenGL 64bit</value>
   <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Desktop Qt 5.4.0 MSVC2013 OpenGL 64bit</value>
   <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">qt.54.win64_msvc2013_64_opengl_kit</value>
   <value type="int" key="ProjectExplorer.Target.ActiveBuildConfiguration">1</value>
   <value type="int" key="ProjectExplorer.Target.ActiveDeployConfiguration">0</value>
   <value type="int" key="ProjectExplorer.Target.ActiveRunConfiguration">0</value>
   <valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.0">
    <value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">E:/2015/Project/Qt/build-Label-Desktop_Qt_5_4_0_MSVC2013_OpenGL_64bit-Debug</value>
    <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
     <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
      <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
      <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">qmake</value>
      <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
      <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
      <value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibrary">false</value>
      <value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibraryAuto">true</value>
      <value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value>
      <value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
      <value type="bool" key="QtProjectManager.QMakeBuildStep.UseQtQuickCompiler">false</value>
     </valuemap>
     <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
      <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
      <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
      <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
      <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
      <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments"/>
      <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value>
      <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments"></value>
      <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
     </valuemap>
     <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">构建</value>
     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
     <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
    </valuemap>
    <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
     <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
      <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
      <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
      <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
      <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
      <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments"/>
      <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value>
      <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
      <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
     </valuemap>
     <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">清理</value>
     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
     <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
    </valuemap>
    <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
    <value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
    <valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
    <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Debug</value>
    <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
    <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
    <value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">2</value>
    <value type="bool" key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild">true</value>
   </valuemap>
   <valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.1">
    <value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">E:/2015/Project/Qt/build-Label-Desktop_Qt_5_4_0_MSVC2013_OpenGL_64bit-Release</value>
    <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
     <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
      <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
      <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">qmake</value>
      <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
      <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
      <value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibrary">false</value>
      <value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibraryAuto">true</value>
      <value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value>
      <value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
      <value type="bool" key="QtProjectManager.QMakeBuildStep.UseQtQuickCompiler">false</value>
     </valuemap>
     <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
      <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
      <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
      <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
      <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
      <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments"/>
      <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value>
      <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments"></value>
      <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
     </valuemap>
     <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">构建</value>
     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
     <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
    </valuemap>
    <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
     <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
      <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
      <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
      <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
      <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
      <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments"/>
      <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value>
      <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
      <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
     </valuemap>
     <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">清理</value>
     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
     <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
    </valuemap>
    <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
    <value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
    <valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
    <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Release</value>
    <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
    <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
    <value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">0</value>
    <value type="bool" key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild">true</value>
   </valuemap>
   <value type="int" key="ProjectExplorer.Target.BuildConfigurationCount">2</value>
   <valuemap type="QVariantMap" key="ProjectExplorer.Target.DeployConfiguration.0">
    <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
     <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">0</value>
     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">部署</value>
     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
     <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Deploy</value>
    </valuemap>
    <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">1</value>
    <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">在本地部署</value>
    <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
    <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.DefaultDeployConfiguration</value>
   </valuemap>
   <value type="int" key="ProjectExplorer.Target.DeployConfigurationCount">1</value>
   <valuemap type="QVariantMap" key="ProjectExplorer.Target.PluginSettings"/>
   <valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.0">
    <valuelist type="QVariantList" key="Analyzer.Valgrind.AddedSuppressionFiles"/>
    <value type="bool" key="Analyzer.Valgrind.Callgrind.CollectBusEvents">false</value>
    <value type="bool" key="Analyzer.Valgrind.Callgrind.CollectSystime">false</value>
    <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableBranchSim">false</value>
    <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableCacheSim">false</value>
    <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableEventToolTips">true</value>
    <value type="double" key="Analyzer.Valgrind.Callgrind.MinimumCostRatio">0.01</value>
    <value type="double" key="Analyzer.Valgrind.Callgrind.VisualisationMinimumCostRatio">10</value>
    <value type="bool" key="Analyzer.Valgrind.FilterExternalIssues">true</value>
    <value type="int" key="Analyzer.Valgrind.LeakCheckOnFinish">1</value>
    <value type="int" key="Analyzer.Valgrind.NumCallers">25</value>
    <valuelist type="QVariantList" key="Analyzer.Valgrind.RemovedSuppressionFiles"/>
    <value type="int" key="Analyzer.Valgrind.SelfModifyingCodeDetection">1</value>
    <value type="bool" key="Analyzer.Valgrind.Settings.UseGlobalSettings">true</value>
    <value type="bool" key="Analyzer.Valgrind.ShowReachable">false</value>
    <value type="bool" key="Analyzer.Valgrind.TrackOrigins">true</value>
    <value type="QString" key="Analyzer.Valgrind.ValgrindExecutable">valgrind</value>
    <valuelist type="QVariantList" key="Analyzer.Valgrind.VisibleErrorKinds">
     <value type="int">0</value>
     <value type="int">1</value>
     <value type="int">2</value>
     <value type="int">3</value>
     <value type="int">4</value>
     <value type="int">5</value>
     <value type="int">6</value>
     <value type="int">7</value>
     <value type="int">8</value>
     <value type="int">9</value>
     <value type="int">10</value>
     <value type="int">11</value>
     <value type="int">12</value>
     <value type="int">13</value>
     <value type="int">14</value>
    </valuelist>
    <value type="int" key="PE.EnvironmentAspect.Base">2</value>
    <valuelist type="QVariantList" key="PE.EnvironmentAspect.Changes"/>
    <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Label</value>
    <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Label2</value>
    <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4RunConfiguration:E:/2015/Project/Qt/SemiAutoLabel/Label.pro</value>
    <value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.CommandLineArguments"></value>
    <value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.ProFile">Label.pro</value>
    <value type="bool" key="Qt4ProjectManager.Qt4RunConfiguration.UseDyldImageSuffix">false</value>
    <value type="bool" key="Qt4ProjectManager.Qt4RunConfiguration.UseTerminal">false</value>
    <value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.UserWorkingDirectory"></value>
    <value type="uint" key="RunConfiguration.QmlDebugServerPort">3768</value>
    <value type="bool" key="RunConfiguration.UseCppDebugger">false</value>
    <value type="bool" key="RunConfiguration.UseCppDebuggerAuto">true</value>
    <value type="bool" key="RunConfiguration.UseMultiProcess">false</value>
    <value type="bool" key="RunConfiguration.UseQmlDebugger">false</value>
    <value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">true</value>
   </valuemap>
   <value type="int" key="ProjectExplorer.Target.RunConfigurationCount">1</value>
  </valuemap>
 </data>
 <data>
  <variable>ProjectExplorer.Project.TargetCount</variable>
  <value type="int">1</value>
 </data>
 <data>
  <variable>ProjectExplorer.Project.Updater.FileVersion</variable>
  <value type="int">18</value>
 </data>
 <data>
  <variable>Version</variable>
  <value type="int">18</value>
 </data>
</qtcreator>


================================================
FILE: src/Label.pro.user.61d9454
================================================
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE QtCreatorProject>
<!-- Written by QtCreator 3.3.0, 2015-04-03T18:53:32. -->
<qtcreator>
 <data>
  <variable>EnvironmentId</variable>
  <value type="QByteArray">{61d94545-019b-4e36-b6c5-2e4867b1f291}</value>
 </data>
 <data>
  <variable>ProjectExplorer.Project.ActiveTarget</variable>
  <value type="int">0</value>
 </data>
 <data>
  <variable>ProjectExplorer.Project.EditorSettings</variable>
  <valuemap type="QVariantMap">
   <value type="bool" key="EditorConfiguration.AutoIndent">true</value>
   <value type="bool" key="EditorConfiguration.AutoSpacesForTabs">false</value>
   <value type="bool" key="EditorConfiguration.CamelCaseNavigation">true</value>
   <valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.0">
    <value type="QString" key="language">Cpp</value>
    <valuemap type="QVariantMap" key="value">
     <value type="QByteArray" key="CurrentPreferences">CppGlobal</value>
    </valuemap>
   </valuemap>
   <valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.1">
    <value type="QString" key="language">QmlJS</value>
    <valuemap type="QVariantMap" key="value">
     <value type="QByteArray" key="CurrentPreferences">QmlJSGlobal</value>
    </valuemap>
   </valuemap>
   <value type="int" key="EditorConfiguration.CodeStyle.Count">2</value>
   <value type="QByteArray" key="EditorConfiguration.Codec">UTF-8</value>
   <value type="bool" key="EditorConfiguration.ConstrainTooltips">false</value>
   <value type="int" key="EditorConfiguration.IndentSize">4</value>
   <value type="bool" key="EditorConfiguration.KeyboardTooltips">false</value>
   <value type="int" key="EditorConfiguration.MarginColumn">80</value>
   <value type="bool" key="EditorConfiguration.MouseHiding">true</value>
   <value type="bool" key="EditorConfiguration.MouseNavigation">true</value>
   <value type="int" key="EditorConfiguration.PaddingMode">1</value>
   <value type="bool" key="EditorConfiguration.ScrollWheelZooming">true</value>
   <value type="bool" key="EditorConfiguration.ShowMargin">false</value>
   <value type="int" key="EditorConfiguration.SmartBackspaceBehavior">0</value>
   <value type="bool" key="EditorConfiguration.SpacesForTabs">true</value>
   <value type="int" key="EditorConfiguration.TabKeyBehavior">0</value>
   <value type="int" key="EditorConfiguration.TabSize">8</value>
   <value type="bool" key="EditorConfiguration.UseGlobal">true</value>
   <value type="int" key="EditorConfiguration.Utf8BomBehavior">1</value>
   <value type="bool" key="EditorConfiguration.addFinalNewLine">true</value>
   <value type="bool" key="EditorConfiguration.cleanIndentation">true</value>
   <value type="bool" key="EditorConfiguration.cleanWhitespace">true</value>
   <value type="bool" key="EditorConfiguration.inEntireDocument">false</value>
  </valuemap>
 </data>
 <data>
  <variable>ProjectExplorer.Project.PluginSettings</variable>
  <valuemap type="QVariantMap"/>
 </data>
 <data>
  <variable>ProjectExplorer.Project.Target.0</variable>
  <valuemap type="QVariantMap">
   <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Desktop Qt 5.4.0 MSVC2013 OpenGL 64bit</value>
   <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Desktop Qt 5.4.0 MSVC2013 OpenGL 64bit</value>
   <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">qt.54.win64_msvc2013_64_opengl_kit</value>
   <value type="int" key="ProjectExplorer.Target.ActiveBuildConfiguration">1</value>
   <value type="int" key="ProjectExplorer.Target.ActiveDeployConfiguration">0</value>
   <value type="int" key="ProjectExplorer.Target.ActiveRunConfiguration">0</value>
   <valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.0">
    <value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">E:/2015/Project/Qt/build-Label-Desktop_Qt_5_4_0_MSVC2013_OpenGL_64bit-Debug</value>
    <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
     <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
      <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
      <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">qmake</value>
      <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
      <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
      <value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibrary">false</value>
      <value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibraryAuto">true</value>
      <value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value>
      <value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
      <value type="bool" key="QtProjectManager.QMakeBuildStep.UseQtQuickCompiler">false</value>
     </valuemap>
     <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
      <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
      <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
      <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
      <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
      <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments"/>
      <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value>
      <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments"></value>
      <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
     </valuemap>
     <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">构建</value>
     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
     <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
    </valuemap>
    <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
     <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
      <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
      <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
      <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
      <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
      <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments"/>
      <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value>
      <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
      <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
     </valuemap>
     <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">清理</value>
     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
     <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
    </valuemap>
    <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
    <value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
    <valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
    <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Debug</value>
    <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
    <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
    <value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">2</value>
    <value type="bool" key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild">true</value>
   </valuemap>
   <valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.1">
    <value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">E:/2015/Project/Qt/build-Label-Desktop_Qt_5_4_0_MSVC2013_OpenGL_64bit-Release</value>
    <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
     <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
      <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
      <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">qmake</value>
      <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
      <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
      <value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibrary">false</value>
      <value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibraryAuto">true</value>
      <value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value>
      <value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
      <value type="bool" key="QtProjectManager.QMakeBuildStep.UseQtQuickCompiler">false</value>
     </valuemap>
     <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
      <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
      <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
      <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
      <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
      <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments"/>
      <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value>
      <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments"></value>
      <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
     </valuemap>
     <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">构建</value>
     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
     <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
    </valuemap>
    <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
     <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
      <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
      <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
      <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
      <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
      <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments"/>
      <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value>
      <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
      <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
     </valuemap>
     <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">清理</value>
     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
     <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
    </valuemap>
    <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
    <value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
    <valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
    <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Release</value>
    <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
    <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
    <value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">0</value>
    <value type="bool" key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild">true</value>
   </valuemap>
   <value type="int" key="ProjectExplorer.Target.BuildConfigurationCount">2</value>
   <valuemap type="QVariantMap" key="ProjectExplorer.Target.DeployConfiguration.0">
    <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
     <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">0</value>
     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">部署</value>
     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
     <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Deploy</value>
    </valuemap>
    <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">1</value>
    <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">在本地部署</value>
    <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
    <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.DefaultDeployConfiguration</value>
   </valuemap>
   <value type="int" key="ProjectExplorer.Target.DeployConfigurationCount">1</value>
   <valuemap type="QVariantMap" key="ProjectExplorer.Target.PluginSettings"/>
   <valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.0">
    <valuelist type="QVariantList" key="Analyzer.Valgrind.AddedSuppressionFiles"/>
    <value type="bool" key="Analyzer.Valgrind.Callgrind.CollectBusEvents">false</value>
    <value type="bool" key="Analyzer.Valgrind.Callgrind.CollectSystime">false</value>
    <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableBranchSim">false</value>
    <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableCacheSim">false</value>
    <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableEventToolTips">true</value>
    <value type="double" key="Analyzer.Valgrind.Callgrind.MinimumCostRatio">0.01</value>
    <value type="double" key="Analyzer.Valgrind.Callgrind.VisualisationMinimumCostRatio">10</value>
    <value type="bool" key="Analyzer.Valgrind.FilterExternalIssues">true</value>
    <value type="int" key="Analyzer.Valgrind.LeakCheckOnFinish">1</value>
    <value type="int" key="Analyzer.Valgrind.NumCallers">25</value>
    <valuelist type="QVariantList" key="Analyzer.Valgrind.RemovedSuppressionFiles"/>
    <value type="int" key="Analyzer.Valgrind.SelfModifyingCodeDetection">1</value>
    <value type="bool" key="Analyzer.Valgrind.Settings.UseGlobalSettings">true</value>
    <value type="bool" key="Analyzer.Valgrind.ShowReachable">false</value>
    <value type="bool" key="Analyzer.Valgrind.TrackOrigins">true</value>
    <value type="QString" key="Analyzer.Valgrind.ValgrindExecutable">valgrind</value>
    <valuelist type="QVariantList" key="Analyzer.Valgrind.VisibleErrorKinds">
     <value type="int">0</value>
     <value type="int">1</value>
     <value type="int">2</value>
     <value type="int">3</value>
     <value type="int">4</value>
     <value type="int">5</value>
     <value type="int">6</value>
     <value type="int">7</value>
     <value type="int">8</value>
     <value type="int">9</value>
     <value type="int">10</value>
     <value type="int">11</value>
     <value type="int">12</value>
     <value type="int">13</value>
     <value type="int">14</value>
    </valuelist>
    <value type="int" key="PE.EnvironmentAspect.Base">2</value>
    <valuelist type="QVariantList" key="PE.EnvironmentAspect.Changes"/>
    <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Label</value>
    <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
    <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4RunConfiguration:E:/2015/Project/Qt/Label/Label.pro</value>
    <value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.CommandLineArguments"></value>
    <value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.ProFile">Label.pro</value>
    <value type="bool" key="Qt4ProjectManager.Qt4RunConfiguration.UseDyldImageSuffix">false</value>
    <value type="bool" key="Qt4ProjectManager.Qt4RunConfiguration.UseTerminal">false</value>
    <value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.UserWorkingDirectory"></value>
    <value type="uint" key="RunConfiguration.QmlDebugServerPort">3768</value>
    <value type="bool" key="RunConfiguration.UseCppDebugger">false</value>
    <value type="bool" key="RunConfiguration.UseCppDebuggerAuto">true</value>
    <value type="bool" key="RunConfiguration.UseMultiProcess">false</value>
    <value type="bool" key="RunConfiguration.UseQmlDebugger">false</value>
    <value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">true</value>
   </valuemap>
   <value type="int" key="ProjectExplorer.Target.RunConfigurationCount">1</value>
  </valuemap>
 </data>
 <data>
  <variable>ProjectExplorer.Project.TargetCount</variable>
  <value type="int">1</value>
 </data>
 <data>
  <variable>ProjectExplorer.Project.Updater.FileVersion</variable>
  <value type="int">18</value>
 </data>
 <data>
  <variable>Version</variable>
  <value type="int">18</value>
 </data>
</qtcreator>


================================================
FILE: src/Label.pro.user.722262d
================================================
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE QtCreatorProject>
<!-- Written by QtCreator 3.3.1, 2015-04-08T17:44:51. -->
<qtcreator>
 <data>
  <variable>EnvironmentId</variable>
  <value type="QByteArray">{722262d8-1a19-4320-a67d-98abab6abdea}</value>
 </data>
 <data>
  <variable>ProjectExplorer.Project.ActiveTarget</variable>
  <value type="int">0</value>
 </data>
 <data>
  <variable>ProjectExplorer.Project.EditorSettings</variable>
  <valuemap type="QVariantMap">
   <value type="bool" key="EditorConfiguration.AutoIndent">true</value>
   <value type="bool" key="EditorConfiguration.AutoSpacesForTabs">false</value>
   <value type="bool" key="EditorConfiguration.CamelCaseNavigation">true</value>
   <valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.0">
    <value type="QString" key="language">Cpp</value>
    <valuemap type="QVariantMap" key="value">
     <value type="QByteArray" key="CurrentPreferences">CppGlobal</value>
    </valuemap>
   </valuemap>
   <valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.1">
    <value type="QString" key="language">QmlJS</value>
    <valuemap type="QVariantMap" key="value">
     <value type="QByteArray" key="CurrentPreferences">QmlJSGlobal</value>
    </valuemap>
   </valuemap>
   <value type="int" key="EditorConfiguration.CodeStyle.Count">2</value>
   <value type="QByteArray" key="EditorConfiguration.Codec">UTF-8</value>
   <value type="bool" key="EditorConfiguration.ConstrainTooltips">false</value>
   <value type="int" key="EditorConfiguration.IndentSize">4</value>
   <value type="bool" key="EditorConfiguration.KeyboardTooltips">false</value>
   <value type="int" key="EditorConfiguration.MarginColumn">80</value>
   <value type="bool" key="EditorConfiguration.MouseHiding">true</value>
   <value type="bool" key="EditorConfiguration.MouseNavigation">true</value>
   <value type="int" key="EditorConfiguration.PaddingMode">1</value>
   <value type="bool" key="EditorConfiguration.ScrollWheelZooming">true</value>
   <value type="bool" key="EditorConfiguration.ShowMargin">false</value>
   <value type="int" key="EditorConfiguration.SmartBackspaceBehavior">0</value>
   <value type="bool" key="EditorConfiguration.SpacesForTabs">true</value>
   <value type="int" key="EditorConfiguration.TabKeyBehavior">0</value>
   <value type="int" key="EditorConfiguration.TabSize">8</value>
   <value type="bool" key="EditorConfiguration.UseGlobal">true</value>
   <value type="int" key="EditorConfiguration.Utf8BomBehavior">1</value>
   <value type="bool" key="EditorConfiguration.addFinalNewLine">true</value>
   <value type="bool" key="EditorConfiguration.cleanIndentation">true</value>
   <value type="bool" key="EditorConfiguration.cleanWhitespace">true</value>
   <value type="bool" key="EditorConfiguration.inEntireDocument">false</value>
  </valuemap>
 </data>
 <data>
  <variable>ProjectExplorer.Project.PluginSettings</variable>
  <valuemap type="QVariantMap"/>
 </data>
 <data>
  <variable>ProjectExplorer.Project.Target.0</variable>
  <valuemap type="QVariantMap">
   <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Desktop Qt 5.4.1 MSVC2013 OpenGL 64bit</value>
   <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Desktop Qt 5.4.1 MSVC2013 OpenGL 64bit</value>
   <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">qt.54.win64_msvc2013_64_opengl_kit</value>
   <value type="int" key="ProjectExplorer.Target.ActiveBuildConfiguration">1</value>
   <value type="int" key="ProjectExplorer.Target.ActiveDeployConfiguration">0</value>
   <value type="int" key="ProjectExplorer.Target.ActiveRunConfiguration">0</value>
   <valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.0">
    <value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">C:/Users/culan/Desktop/build-Label-Desktop_Qt_5_4_1_MSVC2013_OpenGL_64bit-Debug</value>
    <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
     <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
      <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
      <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">qmake</value>
      <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
      <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
      <value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibrary">false</value>
      <value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibraryAuto">true</value>
      <value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value>
      <value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
      <value type="bool" key="QtProjectManager.QMakeBuildStep.UseQtQuickCompiler">false</value>
     </valuemap>
     <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
      <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
      <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
      <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
      <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
      <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments"/>
      <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value>
      <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments"></value>
      <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
     </valuemap>
     <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
     <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
    </valuemap>
    <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
     <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
      <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
      <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
      <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
      <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
      <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments"/>
      <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value>
      <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
      <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
     </valuemap>
     <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Clean</value>
     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
     <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
    </valuemap>
    <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
    <value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
    <valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
    <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Debug</value>
    <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
    <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
    <value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">2</value>
    <value type="bool" key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild">true</value>
   </valuemap>
   <valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.1">
    <value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">C:/Users/culan/Desktop/build-SemiAutoLabel-Desktop_Qt_5_4_1_MSVC2013_OpenGL_64bit-Release</value>
    <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
     <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
      <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
      <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">qmake</value>
      <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
      <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
      <value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibrary">false</value>
      <value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibraryAuto">true</value>
      <value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value>
      <value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
      <value type="bool" key="QtProjectManager.QMakeBuildStep.UseQtQuickCompiler">false</value>
     </valuemap>
     <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
      <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
      <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
      <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
      <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
      <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments"/>
      <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value>
      <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments"></value>
      <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
     </valuemap>
     <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
     <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
    </valuemap>
    <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
     <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
      <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
      <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
      <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
      <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
      <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments"/>
      <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value>
      <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
      <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
     </valuemap>
     <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Clean</value>
     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
     <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
    </valuemap>
    <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
    <value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
    <valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
    <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Release</value>
    <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
    <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
    <value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">0</value>
    <value type="bool" key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild">true</value>
   </valuemap>
   <value type="int" key="ProjectExplorer.Target.BuildConfigurationCount">2</value>
   <valuemap type="QVariantMap" key="ProjectExplorer.Target.DeployConfiguration.0">
    <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
     <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">0</value>
     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Deploy</value>
     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
     <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Deploy</value>
    </valuemap>
    <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">1</value>
    <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Deploy locally</value>
    <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
    <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.DefaultDeployConfiguration</value>
   </valuemap>
   <value type="int" key="ProjectExplorer.Target.DeployConfigurationCount">1</value>
   <valuemap type="QVariantMap" key="ProjectExplorer.Target.PluginSettings"/>
   <valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.0">
    <valuelist type="QVariantList" key="Analyzer.Valgrind.AddedSuppressionFiles"/>
    <value type="bool" key="Analyzer.Valgrind.Callgrind.CollectBusEvents">false</value>
    <value type="bool" key="Analyzer.Valgrind.Callgrind.CollectSystime">false</value>
    <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableBranchSim">false</value>
    <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableCacheSim">false</value>
    <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableEventToolTips">true</value>
    <value type="double" key="Analyzer.Valgrind.Callgrind.MinimumCostRatio">0.01</value>
    <value type="double" key="Analyzer.Valgrind.Callgrind.VisualisationMinimumCostRatio">10</value>
    <value type="bool" key="Analyzer.Valgrind.FilterExternalIssues">true</value>
    <value type="int" key="Analyzer.Valgrind.LeakCheckOnFinish">1</value>
    <value type="int" key="Analyzer.Valgrind.NumCallers">25</value>
    <valuelist type="QVariantList" key="Analyzer.Valgrind.RemovedSuppressionFiles"/>
    <value type="int" key="Analyzer.Valgrind.SelfModifyingCodeDetection">1</value>
    <value type="bool" key="Analyzer.Valgrind.Settings.UseGlobalSettings">true</value>
    <value type="bool" key="Analyzer.Valgrind.ShowReachable">false</value>
    <value type="bool" key="Analyzer.Valgrind.TrackOrigins">true</value>
    <value type="QString" key="Analyzer.Valgrind.ValgrindExecutable">valgrind</value>
    <valuelist type="QVariantList" key="Analyzer.Valgrind.VisibleErrorKinds">
     <value type="int">0</value>
     <value type="int">1</value>
     <value type="int">2</value>
     <value type="int">3</value>
     <value type="int">4</value>
     <value type="int">5</value>
     <value type="int">6</value>
     <value type="int">7</value>
     <value type="int">8</value>
     <value type="int">9</value>
     <value type="int">10</value>
     <value type="int">11</value>
     <value type="int">12</value>
     <value type="int">13</value>
     <value type="int">14</value>
    </valuelist>
    <value type="int" key="PE.EnvironmentAspect.Base">2</value>
    <valuelist type="QVariantList" key="PE.EnvironmentAspect.Changes"/>
    <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Label</value>
    <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Label2</value>
    <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4RunConfiguration:C:/Users/culan/Desktop/SemiAutoLabel/Label.pro</value>
    <value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.CommandLineArguments"></value>
    <value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.ProFile">Label.pro</value>
    <value type="bool" key="Qt4ProjectManager.Qt4RunConfiguration.UseDyldImageSuffix">false</value>
    <value type="bool" key="Qt4ProjectManager.Qt4RunConfiguration.UseTerminal">false</value>
    <value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.UserWorkingDirectory"></value>
    <value type="uint" key="RunConfiguration.QmlDebugServerPort">3768</value>
    <value type="bool" key="RunConfiguration.UseCppDebugger">false</value>
    <value type="bool" key="RunConfiguration.UseCppDebuggerAuto">true</value>
    <value type="bool" key="RunConfiguration.UseMultiProcess">false</value>
    <value type="bool" key="RunConfiguration.UseQmlDebugger">false</value>
    <value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">true</value>
   </valuemap>
   <value type="int" key="ProjectExplorer.Target.RunConfigurationCount">1</value>
  </valuemap>
 </data>
 <data>
  <variable>ProjectExplorer.Project.TargetCount</variable>
  <value type="int">1</value>
 </data>
 <data>
  <variable>ProjectExplorer.Project.Updater.FileVersion</variable>
  <value type="int">18</value>
 </data>
 <data>
  <variable>Version</variable>
  <value type="int">18</value>
 </data>
</qtcreator>


================================================
FILE: src/main.cpp
================================================
#include "mainwindow.h"
#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    w.show();
    return a.exec();
}


================================================
FILE: src/mainwindow.cpp
================================================
#include "mainwindow.h"
#include "ui_mainwindow.h"

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    ui->label->setScaledContents(true);

    ui->openPushButton->setEnabled(false);
    ui->autoPushButton->setEnabled(false);
    ui->savePushButton->setEnabled(false);
    ui->redoPushButton->setEnabled(false);
    ui->undoPushButton->setEnabled(false);
    ui->contourModelPushButton->setEnabled(false);


    ui->savePushButton->setShortcut(tr("ctrl+s"));
    ui->redoPushButton->setShortcut(tr("ctrl+r"));
    ui->undoPushButton->setShortcut(tr("ctrl+u"));

    validRegion.x=ui->label->frameGeometry().x();
    validRegion.y=ui->label->frameGeometry().y()+10;
    validRegion.height=ui->label->frameGeometry().height();
    validRegion.width=ui->label->frameGeometry().width();


    prSetDlg=new SetParameterDialog();

    file.setFileName("set.ini");
    if(!file.open(QIODevice::ReadWrite))
    {
        QMessageBox::information(NULL, "File Read Error", file.errorString(),QMessageBox::Ok , QMessageBox::Ok);
    }

    while(!file.atEnd())
    {
        QByteArray line=file.readLine();
        QString strTmp(line);
        strTmp.trimmed();
        if(strTmp.startsWith("SequencePath="))
        {
            prSetDlg->setSeqPath(strTmp.mid(13).trimmed());
        }

        if(strTmp.startsWith("FileFormat="))
        {
           prSetDlg->setFileFormat(strTmp.mid(11).trimmed());
        }

        if(strTmp.startsWith("OutputPath="))
        {
            prSetDlg->setOutputPath(strTmp.mid(11).trimmed());
        }

        if(strTmp.startsWith("StartFrame="))
        {
            prSetDlg->setStartFrame(strTmp.mid(11).trimmed());
        }
    }

    hisfile.setFileName("history.ini");
    if(!hisfile.open(QIODevice::WriteOnly|QIODevice::Append))
    {
        QMessageBox::information(NULL, "File Read Error", file.errorString(),QMessageBox::Ok , QMessageBox::Ok);
    }

    inputPath="";
    outputPath="";
    imgInputPath="";
    imgOutputPath="";

    frameIdx=0;

    drawMouseMove=false;

    useHull=true; //Hull Model When Start

    autoModel=true; //Auto Model When Start

    rectState=NOT_SET;
    lblsState=NOT_SET;
    prLblsState=NOT_SET;
    isInitialized=false;
    isf=true;

}

MainWindow::~MainWindow()
{

    QTextStream out(&file);
    QString strTmp;
    strTmp=QString("%1%2").arg("StartFrame=").arg(prSetDlg->getStartFrame());
    out<<strTmp<<endl;
    file.close();

    QTextStream hisout(&hisfile);
    qint64 elapsedSec=startTime.msecsTo(curTime)/1000;
    strTmp=QString("%1  %2  %3:%4:%5").arg(frameIdx).arg(frameIdx-startIdx).arg(elapsedSec/3600).arg((elapsedSec%3600)/60).arg(elapsedSec%60);
    hisout<<strTmp<<endl;
    hisfile.close();

    delete ui;
}


void MainWindow::displayMat(Mat mat)
{
    Mat rgb;
    QImage img;
    if(mat.channels()==3)
    {
        cvtColor(mat,rgb,CV_BGR2RGB);
        img = QImage((const uchar*)(rgb.data),rgb.cols,rgb.rows,rgb.cols*rgb.channels(),QImage::Format_RGB888);
    }
    else
    {
        img = QImage((const uchar*)(mat.data),mat.cols,mat.rows,mat.cols*mat.channels(),QImage::Format_Indexed8);
    }
    ui->label->setPixmap(QPixmap::fromImage(img));
    ui->label->resize(ui->label->pixmap()->size());
    ui->label->show();
}



void MainWindow::on_setPushButton_clicked()
{
    ui->openPushButton->setEnabled(false);
    ui->autoPushButton->setEnabled(false);
    ui->savePushButton->setEnabled(false);
    ui->redoPushButton->setEnabled(false);
    ui->undoPushButton->setEnabled(false);
    ui->contourModelPushButton->setEnabled(false);


    if(prSetDlg->exec()==QDialog::Accepted)
    {
       QString seqPath=prSetDlg->getSeqPath();
       QString fileFormat=prSetDlg->getFileFormat();
       QString oPath=prSetDlg->getOutputPath();
       QString startFrame=prSetDlg->getStartFrame();


       file.resize(0);
       QTextStream out(&file);
       QString strTmp;
       strTmp=QString("%1%2").arg("SequencePath=").arg(seqPath);
       out<<strTmp<<endl;
       strTmp=QString("%1%2").arg("FileFormat=").arg(fileFormat);
       out<<strTmp<<endl;
       strTmp=QString("%1%2").arg("OutputPath=").arg(oPath);
       out<<strTmp<<endl;


       if(seqPath==""||fileFormat==""||oPath==""||startFrame=="")
       {
           QMessageBox::information(NULL, "Information", "Please Set The Parematers",QMessageBox::Ok , QMessageBox::Ok);
       }
       else
       {
           if(seqPath.endsWith("\\"))
           {
               inputPath=seqPath+fileFormat;
           }
           else
           {
               inputPath=seqPath+"\\"+fileFormat;
           }

           if(outputPath.endsWith("\\"))
           {
               outputPath=oPath+fileFormat;
           }
           else
           {
               //outputPath=oPath+"\\"+fileFormat;
               outputPath=oPath+"\\frame%.5d.bmp";
           }

           frameIdx=startFrame.toInt();

           ui->openPushButton->setEnabled(true);
       }
    }
    else
    {
       QMessageBox::information(NULL, "Information", "Please Set The Parematers",QMessageBox::Ok , QMessageBox::Ok);
    }

}

void MainWindow::on_openPushButton_clicked()
{
    readImage();
    ui->openPushButton->setEnabled(false);
    ui->autoPushButton->setEnabled(true);
    ui->savePushButton->setEnabled(true);
    ui->redoPushButton->setEnabled(true);
    ui->undoPushButton->setEnabled(true);
    ui->contourModelPushButton->setEnabled(true);

    startIdx=prSetDlg->getStartFrame().toInt();
    startTime=QDateTime::currentDateTime();
    timerId=startTimer(1000);
}

void MainWindow::on_autoPushButton_clicked()
{
    if(autoModel)
    {
        autoModel=false;
        ui->autoPushButton->setText("Auto");
    }
    else
    {
        resetAMParameters();
        autoModel=true;
        ui->autoPushButton->setText("Manual");
    }
}

void MainWindow::on_savePushButton_clicked()
{
    cv::resize(img_cur,img_cur,Size(640,480));

    imgOutputPath.sprintf(outputPath.toStdString().c_str(),frameIdx);
    if(!imwrite(imgOutputPath.toStdString(),img_cur))
    {
        QMessageBox::information(NULL,"Save Error","Please Check Your Save Path!",QMessageBox::Ok);
    }
    else
    {
        frameIdx++;
        readImage();
        if(!readImage())
        {
            frameIdx--;
        }
    }
}

void MainWindow::on_redoPushButton_clicked()
{
    readImage();
}

void MainWindow::on_undoPushButton_clicked()
{
    img_pre.copyTo(img_cur);
    img_pre.copyTo(img_cur_copy);
    displayMat(img_cur);
    contour.clear();
    resetAMParameters();
}

void MainWindow::on_contourModelPushButton_clicked()
{
    if(useHull)
    {
        useHull=false;
        ui->contourModelPushButton->setText("Hull");
    }
    else
    {
        useHull=true;
        ui->contourModelPushButton->setText("Poly");
    }
}

void MainWindow::mousePressEvent(QMouseEvent *event)
{
    if(event->button()==Qt::LeftButton)              //{Left Button Be Pressed}
    {
        Point pointTmp(event->x(),event->y());
        restrictPoint(pointTmp);

        if(autoModel)                      //[Auto Model]
        {
            if(rectState==NOT_SET)                                                          // RectMask
            {
                rect.x=pointTmp.x;
                rect.y=pointTmp.y;
                rectState=IN_PROCESS;
            }
            else if(rectState==SET&&QApplication::keyboardModifiers()==Qt::ShiftModifier)   // Shift+LeftClick: GC_FG
            {
                isf=true;
                lblsState=IN_PROCESS;
            }
            else if(rectState==SET&&QApplication::keyboardModifiers()==Qt::ControlModifier) // Ctrl+LeftClick: GC_BG
            {
                isf=false;
                lblsState=IN_PROCESS;
            }
            else if(rectState==SET&&QApplication::keyboardModifiers()==Qt::AltModifier)     // Alt+LeftClick: GC_PR_FG
            {
                isf=true;
                prLblsState=IN_PROCESS;
            }
            else if(rectState==SET)                                                         // LeftClick: GC_PR_BG
            {
                isf=false;
                prLblsState=IN_PROCESS;
            }

        }
        else                               //[Manual Model]
        {
            contour.push_back(pointTmp);
            drawConnects();
        }

        drawMouseMove=true;
    }
    else if(event->button()==Qt::RightButton)        //{Right Button Be Pressed}
    {
        if(autoModel)                      //[Auto Model]
        {
            //Ctrl+RightClick One: Draw The Contour; Double: Fill The Contour
            if(rectState!=IN_PROCESS&&lblsState!=IN_PROCESS&&prLblsState!=IN_PROCESS)
            {
                if(QApplication::keyboardModifiers()==Qt::ControlModifier)
                {
                    static int rightClickCount=0;
                    if(rightClickCount==0)
                    {
                        Mat binMask;
                        getBinMask(mask, binMask);
                        vector<vector<Point>> contours;
                        findContours(binMask, contours, CV_RETR_EXTERNAL, CV_CHAIN_APPROX_NONE);

                        if(contours.size()==1)
                        {
                            contour=contours[0];
                        }
                        else
                        {
                            QMessageBox::information(NULL,"Information","Please Label One Foreground Object !",QMessageBox::Ok);
                        }

                        drawConnects();

                        resetAMParameters();
                        rightClickCount=1;
                    }
                    else if(rightClickCount==1)
                    {
                        contourFill();
                        rightClickCount=0;
                    }
                }
                else    //RightClick: Cut The Foreground Iteratively
                {
                    if (isInitialized)
                        grabCut(img_cur, mask, rect, bgdModel, fgdModel, 1);
                    else
                    {
                        if (lblsState == SET || prLblsState == SET)
                            grabCut(img_cur, mask, rect, bgdModel, fgdModel, 1, GC_INIT_WITH_MASK);
                        else
                            grabCut(img_cur, mask, rect, bgdModel, fgdModel, 1, GC_INIT_WITH_RECT);

                        isInitialized = true;
                    }
                    bgdPxls.clear(); fgdPxls.clear();
                    prBgdPxls.clear(); prFgdPxls.clear();


                    Mat binMask;
                    Mat res;

                    if (!isInitialized)
                        img_cur.copyTo(img_cur_copy);
                    else
                    {
                        img_cur_copy.setTo(Scalar::all(0));
                        getBinMask(mask, binMask);
                        img_cur.copyTo(img_cur_copy, binMask);
                    }
                    displayMat(img_cur_copy);
                }
            }
            else
            {
                resetAMParameters();
            }
        }
        else                               //[Manual Model]
        {
            contourFill();
        }
    }
    else if(event->button()==Qt::MiddleButton)       //{Middle button be pressed}
    {
        if(!contour.empty())
        {
            contour.pop_back();
            drawConnects();
        }
        else
        {
            QMessageBox::information(NULL,"Information","Points Pool Is Empty !",QMessageBox::Ok);
        }
    }
}

void MainWindow::mouseReleaseEvent(QMouseEvent *event)
{
    if(event->button()==Qt::LeftButton)
    {
        Point pointTmp(event->x(),event->y());
        restrictPoint(pointTmp);

        if(autoModel)                      //[Auto Model]
        {
            if(rectState==IN_PROCESS)
            {
                rect.width=abs(pointTmp.x-rect.x);
                rect.height=abs(pointTmp.y-rect.y);
                rect.x=rect.x>pointTmp.x?pointTmp.x:rect.x;
                rect.y=rect.y>pointTmp.y?pointTmp.y:rect.y;

                if(rect.area()>10) //The Area Of The Rect Should Not Be Too Small
                {
                    mask.setTo(GC_BGD);
                    (mask(rect)).setTo(Scalar(GC_PR_FGD));
                    rectState=SET;
                }
                else
                {
                    resetAMParameters();
                }


            }

            vector<Point>::const_iterator it;
            if(lblsState==IN_PROCESS&&isf)
            {
                for(it=fgdPxls.begin();it!=fgdPxls.end();++it)
                    circle(mask,*it,2,GC_FGD,-1);
                lblsState=SET;
            }

            if(lblsState==IN_PROCESS&&!isf)
            {
                for(it=bgdPxls.begin();it!=bgdPxls.end();++it)
                    circle(mask,*it,2,GC_BGD,-1);
                lblsState=SET;
            }

            if(prLblsState==IN_PROCESS&&isf)
            {
                for(it=prFgdPxls.begin();it!=prFgdPxls.end();++it)
                    circle(mask,*it,2,GC_PR_FGD,-1);
                prLblsState=SET;
            }

            if(prLblsState==IN_PROCESS&&!isf)
            {
                for(it=prBgdPxls.begin();it!=prBgdPxls.end();++it)
                    circle(mask,*it,2,GC_PR_BGD,-1);
                prLblsState=SET;
            }

        }
        else                               //[Manual Model]
        {

        }

        drawMouseMove=false;
    }
}

void MainWindow::mouseMoveEvent(QMouseEvent *event)
{
    if(drawMouseMove)
    {
        Point pointTmp(event->x(),event->y());
        restrictPoint(pointTmp);

        if(autoModel)                     //[Auto Model]
        {
            if(rectState==IN_PROCESS)
            {
                img_cur.copyTo(img_cur_copy);
                rectangle(img_cur_copy,Point(rect.x,rect.y),Point(pointTmp.x,pointTmp.y),Scalar(0,255,0),2);
                displayMat(img_cur_copy);
            }

            if(lblsState==IN_PROCESS&&isf)
            {
                fgdPxls.push_back(pointTmp);
                circle(img_cur_copy,pointTmp,2,Scalar(0,0,255),-1);
                displayMat(img_cur_copy);
            }

            if(lblsState==IN_PROCESS&&!isf)
            {
                bgdPxls.push_back(pointTmp);
                circle(img_cur_copy,pointTmp,2,Scalar(255,0,0),-1);
                displayMat(img_cur_copy);
            }

            if(prLblsState==IN_PROCESS&&isf)
            {
                prFgdPxls.push_back(pointTmp);
                circle(img_cur_copy,pointTmp,2,Scalar(230,130,255),-1);
                displayMat(img_cur_copy);
            }

            if(prLblsState==IN_PROCESS&&!isf)
            {
                prBgdPxls.push_back(pointTmp);
                circle(img_cur_copy,pointTmp,2,Scalar(255,255,160),-1);
                displayMat(img_cur_copy);
            }
        }
        else                              //[Manual Model]
        {
            contour.push_back(pointTmp);
            drawConnects();
        }
    }
}


bool MainWindow::readImage()
{
    contour.clear();

    imgInputPath.sprintf(inputPath.toStdString().c_str(),frameIdx);
    img_cur=imread(imgInputPath.toStdString());
    if(!img_cur.empty())
    {
        img_cur.copyTo(img_pre);
        displayMat(img_cur);

        prSetDlg->setStartFrame(QString("%1").arg(frameIdx));

        mask.create(img_cur.size(),CV_8UC1);

        return true;
    }
    else
    {
        QMessageBox::information(NULL,"Read Failure","Failed To Read "+imgInputPath,QMessageBox::Ok,QMessageBox::Ok);
        return false;
    }

}


void MainWindow::drawConnects()
{
    img_pre.copyTo(img_cur);
    for(int i=0;i<contour.size();i++)
    {
        circle(img_cur,contour.at(i),0,Scalar(0,0,255));
    }

    for(int i=1;i<contour.size();i++) // i=0;i<int(contour.size())-1;i++ ; Note Int ype
    {
        line(img_cur,contour.at(i-1),contour.at(i),Scalar(0,0,255));
    }

    displayMat(img_cur);
}


void MainWindow::contourFill()
{
    if(!contour.empty())
    {
        vector<vector<Point>> contours;
        if(!useHull)
        {
            approxPolyDP(contour,contour,0,true);
        }
        else
        {
            convexHull(Mat(contour),contour);
        }
        contours.push_back(contour);

        img_pre.copyTo(img_cur);
        drawContours(img_cur, contours, -1, Scalar(0,0,255), CV_FILLED);
        displayMat(img_cur);
        img_cur.copyTo(img_pre);
        img_cur.copyTo(img_cur_copy);

        contour.clear();
    }
}

void MainWindow::getBinMask(const Mat& comMask, Mat& binMask)
{
    if (comMask.empty() || comMask.type() != CV_8UC1)
        CV_Error(CV_StsBadArg, "ComMask Is Empty Or Has Incorrect Type (Not CV_8UC1)");
    if (binMask.empty() || binMask.rows != comMask.rows || binMask.cols != comMask.cols)
        binMask.create(comMask.size(), CV_8UC1);
    binMask = comMask & 1;
}

void MainWindow::resetAMParameters()
{
    if (!mask.empty())
        mask.setTo(Scalar::all(GC_BGD));
    bgdPxls.clear(); fgdPxls.clear();
    prBgdPxls.clear();  prFgdPxls.clear();

    isInitialized = false;
    rectState = NOT_SET;
    lblsState = NOT_SET;
    prLblsState = NOT_SET;
}

void MainWindow::restrictPoint(Point & _point)
{
    _point.x-=validRegion.x;
    _point.y-=validRegion.y;

    _point.x=_point.x>0?_point.x:0;
    _point.y=_point.y>0?_point.y:0;

    _point.x=_point.x<validRegion.width?_point.x:validRegion.width;
    _point.y=_point.y<validRegion.height?_point.y:validRegion.height;
}

void MainWindow::paintEvent(QPaintEvent* event)
{
    float xscale=ui->label->frameGeometry().width()/float(validRegion.width);
    float yscale=ui->label->frameGeometry().height()/float(validRegion.height);

    if(!contour.empty())
    {
        for(int i=0;i<contour.size();i++)
        {
            contour.at(i).x*=xscale;
            contour.at(i).y*=yscale;
        }
    }

    if(rectState==SET)
    {
        rect.x*=xscale;
        rect.y*=yscale;
        rect.width*=xscale;
        rect.height*=yscale;
    }

    vector<Point>::iterator it;
    for(it=fgdPxls.begin();it!=fgdPxls.end();++it)
    {
        (*it).x*=xscale;
        (*it).y*=yscale;
    }
    for(it=bgdPxls.begin();it!=bgdPxls.end();++it)
    {
        (*it).x*=xscale;
        (*it).y*=yscale;
    }
    for(it=prFgdPxls.begin();it!=prFgdPxls.end();++it)
    {
        (*it).x*=xscale;
        (*it).y*=yscale;
    }
    for(it=prBgdPxls.begin();it!=prBgdPxls.end();++it)
    {
        (*it).x*=xscale;
        (*it).y*=yscale;
    }

    validRegion.x=ui->label->frameGeometry().x();
    validRegion.y=ui->label->frameGeometry().y()+10;
    validRegion.height=ui->label->frameGeometry().height();
    validRegion.width=ui->label->frameGeometry().width();

    if(!img_cur.empty()&&!img_pre.empty())
    {
        cv::Size sz=cv::Size(validRegion.width,validRegion.height);
        cv::resize(img_pre,img_pre,sz);
        cv::resize(img_cur,img_cur,sz);
    }

    if(!mask.empty()&&!img_cur_copy.empty())
    {
        cv::Size sz=cv::Size(validRegion.width,validRegion.height);
        cv::resize(mask,mask,sz);
        cv::resize(img_cur_copy,img_cur_copy,sz);
    }

}

void MainWindow::timerEvent(QTimerEvent *event)
{
    curTime=QDateTime::currentDateTime();
    qint64 elapsedSec=startTime.msecsTo(curTime)/1000;
    ui->frameshowLabel->setText(QString("%1  %2  %3:%4:%5").arg(frameIdx).arg(frameIdx-startIdx).arg(elapsedSec/3600).arg((elapsedSec%3600)/60).arg(elapsedSec%60));
}



================================================
FILE: src/mainwindow.h
================================================
#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#define _CRT_SECURE_NO_WARNINGS

#include <QMainWindow>
#include <QMessageBox>
#include <QMouseEvent>
#include <QTextStream>
#include <QPaintEvent>
#include <QTime>

#include <vector>
#include <cv.h>
#include <highgui.h>
#include "setparameterdialog.h"

using std::vector;
using namespace cv;


namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();

private slots:
    void on_setPushButton_clicked();
    void on_openPushButton_clicked();
    void on_autoPushButton_clicked();
    void on_savePushButton_clicked();
    void on_redoPushButton_clicked();
    void on_undoPushButton_clicked();
    void on_contourModelPushButton_clicked();

private:
    Ui::MainWindow *ui;

    SetParameterDialog * prSetDlg;

    QString inputPath;
    QString outputPath;
    QString imgInputPath;
    QString imgOutputPath;

    unsigned int startIdx,frameIdx;

    Mat img_cur,img_pre;

    vector<Point> contour;
    Rect validRegion;

    QFile file,hisfile;

    QDateTime startTime,curTime;
    int timerId;

    bool drawMouseMove;
    bool useHull;

    bool autoModel;
    enum{NOT_SET=0,IN_PROCESS=1,SET=2};
    Mat mask;
    Mat img_cur_copy;
    Mat bgdModel,fgdModel;
    Rect rect;
    uchar rectState,lblsState,prLblsState;
    vector<Point> fgdPxls,bgdPxls,prFgdPxls,prBgdPxls;
    bool isInitialized;
    bool isf;

private:
    void displayMat(Mat mat);
    bool readImage();
    void drawConnects();
    void contourFill();
    void getBinMask(const Mat& comMask, Mat& binMask);
    void resetAMParameters();
    void restrictPoint(Point& _point);

protected:
    void mousePressEvent(QMouseEvent *event);
    void mouseReleaseEvent(QMouseEvent *event);
    void mouseMoveEvent(QMouseEvent *event);
    void paintEvent(QPaintEvent *event);
    void timerEvent(QTimerEvent *event);
};

#endif // MAINWINDOW_H


================================================
FILE: src/mainwindow.ui
================================================
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
 <class>MainWindow</class>
 <widget class="QMainWindow" name="MainWindow">
  <property name="geometry">
   <rect>
    <x>0</x>
    <y>0</y>
    <width>660</width>
    <height>573</height>
   </rect>
  </property>
  <property name="windowTitle">
   <string>MainWindow</string>
  </property>
  <widget class="QWidget" name="centralWidget">
   <layout class="QGridLayout" name="gridLayout_2">
    <item row="0" column="0">
     <layout class="QGridLayout" name="gridLayout">
      <item row="0" column="0" colspan="8">
       <widget class="QLabel" name="label">
        <property name="text">
         <string/>
        </property>
       </widget>
      </item>
      <item row="1" column="1">
       <widget class="QPushButton" name="openPushButton">
        <property name="text">
         <string>Open</string>
        </property>
       </widget>
      </item>
      <item row="1" column="3">
       <widget class="QPushButton" name="savePushButton">
        <property name="text">
         <string>Save</string>
        </property>
       </widget>
      </item>
      <item row="1" column="0">
       <widget class="QPushButton" name="setPushButton">
        <property name="text">
         <string>Set</string>
        </property>
       </widget>
      </item>
      <item row="1" column="4">
       <widget class="QPushButton" name="redoPushButton">
        <property name="text">
         <string>Redo</string>
        </property>
       </widget>
      </item>
      <item row="1" column="7">
       <widget class="QLabel" name="frameshowLabel">
        <property name="text">
         <string/>
        </property>
       </widget>
      </item>
      <item row="1" column="6">
       <widget class="QPushButton" name="contourModelPushButton">
        <property name="text">
         <string>Poly</string>
        </property>
       </widget>
      </item>
      <item row="1" column="5">
       <widget class="QPushButton" name="undoPushButton">
        <property name="text">
         <string>Undo</string>
        </property>
       </widget>
      </item>
      <item row="1" column="2">
       <widget class="QPushButton" name="autoPushButton">
        <property name="text">
         <string>Manual</string>
        </property>
       </widget>
      </item>
     </layout>
    </item>
   </layout>
  </widget>
  <widget class="QMenuBar" name="menuBar">
   <property name="geometry">
    <rect>
     <x>0</x>
     <y>0</y>
     <width>660</width>
     <height>21</height>
    </rect>
   </property>
  </widget>
  <widget class="QToolBar" name="mainToolBar">
   <attribute name="toolBarArea">
    <enum>TopToolBarArea</enum>
   </attribute>
   <attribute name="toolBarBreak">
    <bool>false</bool>
   </attribute>
  </widget>
 </widget>
 <layoutdefault spacing="6" margin="11"/>
 <resources/>
 <connections/>
</ui>


================================================
FILE: src/setparameterdialog.cpp
================================================
#include "setparameterdialog.h"
#include "ui_setparameterdialog.h"

#include <string>

SetParameterDialog::SetParameterDialog(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::SetParameterDialog)
{
    ui->setupUi(this);
}

SetParameterDialog::~SetParameterDialog()
{
    delete ui;
}

QString SetParameterDialog::getSeqPath()
{
    return ui->lineEdit_SequencePath->text();
}

QString SetParameterDialog::getFileFormat()
{
    return ui->lineEdit_FileFormat->text();
}

QString SetParameterDialog::getOutputPath()
{
    return ui->lineEdit_OutputPath->text();
}

QString SetParameterDialog::getStartFrame()
{
    return ui->lineEdit_StartFrame->text();
}

void SetParameterDialog::setSeqPath(const QString& str)
{
    ui->lineEdit_SequencePath->setText(str);
}

void SetParameterDialog::setFileFormat(const QString& str)
{
    ui->lineEdit_FileFormat->setText(str);
}

void SetParameterDialog::setOutputPath(const QString& str)
{
    ui->lineEdit_OutputPath->setText(str);
}

void SetParameterDialog::setStartFrame(const QString& str)
{
    ui->lineEdit_StartFrame->setText(str);
}


================================================
FILE: src/setparameterdialog.h
================================================
#ifndef SETPARAMETERDIALOG_H
#define SETPARAMETERDIALOG_H

#include <QDialog>

namespace Ui {
class SetParameterDialog;
}

class SetParameterDialog : public QDialog
{
    Q_OBJECT

public:
    explicit SetParameterDialog(QWidget *parent = 0);
    ~SetParameterDialog();

    QString getSeqPath();
    QString getFileFormat();
    QString getOutputPath();
    QString getStartFrame();

    void setSeqPath(const QString& str);
    void setFileFormat(const QString& str);
    void setOutputPath(const QString& str);
    void setStartFrame(const QString& str);
private:
    Ui::SetParameterDialog *ui;
};

#endif // SETPARAMETERDIALOG_H


================================================
FILE: src/setparameterdialog.ui
================================================
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
 <class>SetParameterDialog</class>
 <widget class="QDialog" name="SetParameterDialog">
  <property name="geometry">
   <rect>
    <x>0</x>
    <y>0</y>
    <width>400</width>
    <height>300</height>
   </rect>
  </property>
  <property name="windowTitle">
   <string>Dialog</string>
  </property>
  <widget class="QDialogButtonBox" name="buttonBox">
   <property name="geometry">
    <rect>
     <x>30</x>
     <y>240</y>
     <width>341</width>
     <height>32</height>
    </rect>
   </property>
   <property name="orientation">
    <enum>Qt::Horizontal</enum>
   </property>
   <property name="standardButtons">
    <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
   </property>
  </widget>
  <widget class="QLabel" name="label">
   <property name="geometry">
    <rect>
     <x>10</x>
     <y>40</y>
     <width>91</width>
     <height>21</height>
    </rect>
   </property>
   <property name="text">
    <string>Sequences Path :</string>
   </property>
  </widget>
  <widget class="QLineEdit" name="lineEdit_SequencePath">
   <property name="geometry">
    <rect>
     <x>110</x>
     <y>41</y>
     <width>271</width>
     <height>20</height>
    </rect>
   </property>
   <property name="text">
    <string>C:\Users\culan\Desktop\VIVIDJPG\egtest04</string>
   </property>
  </widget>
  <widget class="QLabel" name="label2">
   <property name="geometry">
    <rect>
     <x>10</x>
     <y>90</y>
     <width>71</width>
     <height>16</height>
    </rect>
   </property>
   <property name="text">
    <string>File Format :</string>
   </property>
  </widget>
  <widget class="QLineEdit" name="lineEdit_FileFormat">
   <property name="geometry">
    <rect>
     <x>110</x>
     <y>90</y>
     <width>113</width>
     <height>20</height>
    </rect>
   </property>
   <property name="text">
    <string>frame%.5d.jpg</string>
   </property>
  </widget>
  <widget class="QLabel" name="label_2">
   <property name="geometry">
    <rect>
     <x>10</x>
     <y>140</y>
     <width>81</width>
     <height>16</height>
    </rect>
   </property>
   <property name="text">
    <string>Output Path :</string>
   </property>
  </widget>
  <widget class="QLineEdit" name="lineEdit_OutputPath">
   <property name="geometry">
    <rect>
     <x>110</x>
     <y>140</y>
     <width>271</width>
     <height>20</height>
    </rect>
   </property>
   <property name="text">
    <string>C:\Users\culan\Desktop\Labeled\egtest04</string>
   </property>
  </widget>
  <widget class="QLabel" name="label_3">
   <property name="geometry">
    <rect>
     <x>10</x>
     <y>190</y>
     <width>91</width>
     <height>16</height>
    </rect>
   </property>
   <property name="text">
    <string>Start Frame : </string>
   </property>
  </widget>
  <widget class="QLineEdit" name="lineEdit_StartFrame">
   <property name="geometry">
    <rect>
     <x>110</x>
     <y>190</y>
     <width>81</width>
     <height>20</height>
    </rect>
   </property>
   <property name="text">
    <string>0</string>
   </property>
  </widget>
 </widget>
 <resources/>
 <connections>
  <connection>
   <sender>buttonBox</sender>
   <signal>accepted()</signal>
   <receiver>SetParameterDialog</receiver>
   <slot>accept()</slot>
   <hints>
    <hint type="sourcelabel">
     <x>248</x>
     <y>254</y>
    </hint>
    <hint type="destinationlabel">
     <x>157</x>
     <y>274</y>
    </hint>
   </hints>
  </connection>
  <connection>
   <sender>buttonBox</sender>
   <signal>rejected()</signal>
   <receiver>SetParameterDialog</receiver>
   <slot>reject()</slot>
   <hints>
    <hint type="sourcelabel">
     <x>316</x>
     <y>260</y>
    </hint>
    <hint type="destinationlabel">
     <x>286</x>
     <y>274</y>
    </hint>
   </hints>
  </connection>
 </connections>
</ui>
Download .txt
gitextract_xq1sfgw6/

├── README.md
├── released/
│   ├── history.ini
│   └── set.ini
└── src/
    ├── Label.pro
    ├── Label.pro.user
    ├── Label.pro.user.61d9454
    ├── Label.pro.user.722262d
    ├── main.cpp
    ├── mainwindow.cpp
    ├── mainwindow.h
    ├── mainwindow.ui
    ├── setparameterdialog.cpp
    ├── setparameterdialog.h
    └── setparameterdialog.ui
Download .txt
SYMBOL INDEX (9 symbols across 4 files)

FILE: src/main.cpp
  function main (line 4) | int main(int argc, char *argv[])

FILE: src/mainwindow.h
  function namespace (line 22) | namespace Ui {
  function class (line 26) | class MainWindow : public QMainWindow

FILE: src/setparameterdialog.cpp
  function QString (line 18) | QString SetParameterDialog::getSeqPath()
  function QString (line 23) | QString SetParameterDialog::getFileFormat()
  function QString (line 28) | QString SetParameterDialog::getOutputPath()
  function QString (line 33) | QString SetParameterDialog::getStartFrame()

FILE: src/setparameterdialog.h
  function namespace (line 6) | namespace Ui {
  function class (line 10) | class SetParameterDialog : public QDialog
Condensed preview — 14 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (93K chars).
[
  {
    "path": "README.md",
    "chars": 644,
    "preview": "# 图像标注工具\n前段时间由于工作需要对图像中目标进行像素级标注,自己写的小工具,在此分享给大家\n\n###环境:\n\nQT+Opencv实现\n\n###实现功能:\n\n1 标注任意格式的图像\n\n2 可手动绘制轮廓进行标注\n\n3 可利用GrabCu"
  },
  {
    "path": "released/history.ini",
    "chars": 0,
    "preview": ""
  },
  {
    "path": "released/set.ini",
    "chars": 138,
    "preview": "SequencePath=E:\\Research\\HP\\Data\\VIVID\\egtest04_bmp\nFileFormat=frame%.5d.bmp\nOutputPath=E:\\Research\\HP\\Data\\Labeled\\egte"
  },
  {
    "path": "src/Label.pro",
    "chars": 1220,
    "preview": "#-------------------------------------------------\n#\n# Project created by QtCreator 2015-04-02T15:13:39\n#\n#-------------"
  },
  {
    "path": "src/Label.pro.user",
    "chars": 18237,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE QtCreatorProject>\n<!-- Written by QtCreator 3.3.0, 2015-08-05T17:58:19."
  },
  {
    "path": "src/Label.pro.user.61d9454",
    "chars": 18223,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE QtCreatorProject>\n<!-- Written by QtCreator 3.3.0, 2015-04-03T18:53:32."
  },
  {
    "path": "src/Label.pro.user.722262d",
    "chars": 18282,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE QtCreatorProject>\n<!-- Written by QtCreator 3.3.1, 2015-04-08T17:44:51."
  },
  {
    "path": "src/main.cpp",
    "chars": 171,
    "preview": "#include \"mainwindow.h\"\n#include <QApplication>\n\nint main(int argc, char *argv[])\n{\n    QApplication a(argc, argv);\n    "
  },
  {
    "path": "src/mainwindow.cpp",
    "chars": 19658,
    "preview": "#include \"mainwindow.h\"\n#include \"ui_mainwindow.h\"\n\nMainWindow::MainWindow(QWidget *parent) :\n    QMainWindow(parent),\n "
  },
  {
    "path": "src/mainwindow.h",
    "chars": 1963,
    "preview": "#ifndef MAINWINDOW_H\n#define MAINWINDOW_H\n\n#define _CRT_SECURE_NO_WARNINGS\n\n#include <QMainWindow>\n#include <QMessageBox"
  },
  {
    "path": "src/mainwindow.ui",
    "chars": 2890,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<ui version=\"4.0\">\n <class>MainWindow</class>\n <widget class=\"QMainWindow\" name=\""
  },
  {
    "path": "src/setparameterdialog.cpp",
    "chars": 1088,
    "preview": "#include \"setparameterdialog.h\"\n#include \"ui_setparameterdialog.h\"\n\n#include <string>\n\nSetParameterDialog::SetParameterD"
  },
  {
    "path": "src/setparameterdialog.h",
    "chars": 634,
    "preview": "#ifndef SETPARAMETERDIALOG_H\n#define SETPARAMETERDIALOG_H\n\n#include <QDialog>\n\nnamespace Ui {\nclass SetParameterDialog;\n"
  },
  {
    "path": "src/setparameterdialog.ui",
    "chars": 3811,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<ui version=\"4.0\">\n <class>SetParameterDialog</class>\n <widget class=\"QDialog\" na"
  }
]

About this extraction

This page contains the full source code of the lanbing510/ImageLabel GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 14 files (84.9 KB), approximately 22.7k tokens, and a symbol index with 9 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!