[
  {
    "path": "README.md",
    "content": "# 图像标注工具\n前段时间由于工作需要对图像中目标进行像素级标注，自己写的小工具，在此分享给大家\n\n###环境：\n\nQT+Opencv实现\n\n###实现功能：\n\n1 标注任意格式的图像\n\n2 可手动绘制轮廓进行标注\n\n3 可利用GrabCut进行半自动标注\n\n4 支持Hull类型及Poly类型多种轮廓\n\n5 支持各种后退重做等快捷键功能\n\n6 可记录标注进度及标注所用时间\n\n软件截图如下：\n\n<img src=\"https://github.com/lanbing510/Label/raw/master/screenshots/label.png\" width=\"60%\" height=\"50%\">\n\n左侧第一个目标为GrabCut进行标注的示例，第二个为手动标注的结果\n\n\n###快捷键说明：\n\n1 CTRL+S Save，保存标注的图像\n\n2 CTRL+R Redo，重新进行标注\n\n3 CTRL+U Undo，后退一步\n\n4 手动模式下，鼠标左键进行轮廓绘制，鼠标中键也可进行后退一步的操作，绘制完成后右键进行填充完成\n\n5 自动模式下，鼠标左键直接在目标周围拖出一个矩形-->右键-->Ctrl+右键进行轮廓绘制-->Ctrl+右键填充;为了更精确的提取轮廓，可为GrabCut提供更多的信息：Shift+左键: GC_FG，Ctrl+左键: GC_BG，Alt+左键: GC_PR_FG，LeftClick: GC_PR_BG，参数相关信息可以查阅Opencv文档\n\n\n"
  },
  {
    "path": "released/history.ini",
    "content": ""
  },
  {
    "path": "released/set.ini",
    "content": "SequencePath=E:\\Research\\HP\\Data\\VIVID\\egtest04_bmp\nFileFormat=frame%.5d.bmp\nOutputPath=E:\\Research\\HP\\Data\\Labeled\\egtest04\nStartFrame=0\n"
  },
  {
    "path": "src/Label.pro",
    "content": "#-------------------------------------------------\n#\n# Project created by QtCreator 2015-04-02T15:13:39\n#\n#-------------------------------------------------\n\nQT       += core gui\n\ngreaterThan(QT_MAJOR_VERSION, 4): QT += widgets\n\nTARGET = Label\nTEMPLATE = app\n\n\nSOURCES += main.cpp\\\n        mainwindow.cpp \\\n    setparameterdialog.cpp\n\nHEADERS  += mainwindow.h \\\n    setparameterdialog.h\n\nFORMS    += mainwindow.ui \\\n    setparameterdialog.ui\n\nINCLUDEPATH +=  D:/Libraries/opencv249/build/include/ \\\n                D:/Libraries/opencv249/build/include/opencv\n\nLIBS += -LD:/Libraries/opencv249/build/x64/vc12/lib \\\n        -LD:/Libraries/opencv249/build/x64/vc12/bin \\\n        -lopencv_calib3d249 \\\n        -lopencv_contrib249 \\\n        -lopencv_core249 \\\n        -lopencv_features2d249 \\\n        -lopencv_flann249 \\\n        -lopencv_gpu249 \\\n        -lopencv_highgui249 \\\n        -lopencv_imgproc249 \\\n        -lopencv_legacy249 \\\n        -lopencv_ml249 \\\n        -lopencv_nonfree249 \\\n        -lopencv_objdetect249 \\\n        -lopencv_ocl249 \\\n        -lopencv_photo249 \\\n        -lopencv_stitching249 \\\n        -lopencv_superres249 \\\n        -lopencv_ts249 \\\n        -lopencv_video249 \\\n        -lopencv_videostab249 \\\n"
  },
  {
    "path": "src/Label.pro.user",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE QtCreatorProject>\n<!-- Written by QtCreator 3.3.0, 2015-08-05T17:58:19. -->\n<qtcreator>\n <data>\n  <variable>EnvironmentId</variable>\n  <value type=\"QByteArray\">{dbd1f9ef-49c6-4a07-a222-5d5c8e36393a}</value>\n </data>\n <data>\n  <variable>ProjectExplorer.Project.ActiveTarget</variable>\n  <value type=\"int\">0</value>\n </data>\n <data>\n  <variable>ProjectExplorer.Project.EditorSettings</variable>\n  <valuemap type=\"QVariantMap\">\n   <value type=\"bool\" key=\"EditorConfiguration.AutoIndent\">true</value>\n   <value type=\"bool\" key=\"EditorConfiguration.AutoSpacesForTabs\">false</value>\n   <value type=\"bool\" key=\"EditorConfiguration.CamelCaseNavigation\">true</value>\n   <valuemap type=\"QVariantMap\" key=\"EditorConfiguration.CodeStyle.0\">\n    <value type=\"QString\" key=\"language\">Cpp</value>\n    <valuemap type=\"QVariantMap\" key=\"value\">\n     <value type=\"QByteArray\" key=\"CurrentPreferences\">CppGlobal</value>\n    </valuemap>\n   </valuemap>\n   <valuemap type=\"QVariantMap\" key=\"EditorConfiguration.CodeStyle.1\">\n    <value type=\"QString\" key=\"language\">QmlJS</value>\n    <valuemap type=\"QVariantMap\" key=\"value\">\n     <value type=\"QByteArray\" key=\"CurrentPreferences\">QmlJSGlobal</value>\n    </valuemap>\n   </valuemap>\n   <value type=\"int\" key=\"EditorConfiguration.CodeStyle.Count\">2</value>\n   <value type=\"QByteArray\" key=\"EditorConfiguration.Codec\">UTF-8</value>\n   <value type=\"bool\" key=\"EditorConfiguration.ConstrainTooltips\">false</value>\n   <value type=\"int\" key=\"EditorConfiguration.IndentSize\">4</value>\n   <value type=\"bool\" key=\"EditorConfiguration.KeyboardTooltips\">false</value>\n   <value type=\"int\" key=\"EditorConfiguration.MarginColumn\">80</value>\n   <value type=\"bool\" key=\"EditorConfiguration.MouseHiding\">true</value>\n   <value type=\"bool\" key=\"EditorConfiguration.MouseNavigation\">true</value>\n   <value type=\"int\" key=\"EditorConfiguration.PaddingMode\">1</value>\n   <value type=\"bool\" key=\"EditorConfiguration.ScrollWheelZooming\">true</value>\n   <value type=\"bool\" key=\"EditorConfiguration.ShowMargin\">false</value>\n   <value type=\"int\" key=\"EditorConfiguration.SmartBackspaceBehavior\">0</value>\n   <value type=\"bool\" key=\"EditorConfiguration.SpacesForTabs\">true</value>\n   <value type=\"int\" key=\"EditorConfiguration.TabKeyBehavior\">0</value>\n   <value type=\"int\" key=\"EditorConfiguration.TabSize\">8</value>\n   <value type=\"bool\" key=\"EditorConfiguration.UseGlobal\">true</value>\n   <value type=\"int\" key=\"EditorConfiguration.Utf8BomBehavior\">1</value>\n   <value type=\"bool\" key=\"EditorConfiguration.addFinalNewLine\">true</value>\n   <value type=\"bool\" key=\"EditorConfiguration.cleanIndentation\">true</value>\n   <value type=\"bool\" key=\"EditorConfiguration.cleanWhitespace\">true</value>\n   <value type=\"bool\" key=\"EditorConfiguration.inEntireDocument\">false</value>\n  </valuemap>\n </data>\n <data>\n  <variable>ProjectExplorer.Project.PluginSettings</variable>\n  <valuemap type=\"QVariantMap\"/>\n </data>\n <data>\n  <variable>ProjectExplorer.Project.Target.0</variable>\n  <valuemap type=\"QVariantMap\">\n   <value type=\"QString\" key=\"ProjectExplorer.ProjectConfiguration.DefaultDisplayName\">Desktop Qt 5.4.0 MSVC2013 OpenGL 64bit</value>\n   <value type=\"QString\" key=\"ProjectExplorer.ProjectConfiguration.DisplayName\">Desktop Qt 5.4.0 MSVC2013 OpenGL 64bit</value>\n   <value type=\"QString\" key=\"ProjectExplorer.ProjectConfiguration.Id\">qt.54.win64_msvc2013_64_opengl_kit</value>\n   <value type=\"int\" key=\"ProjectExplorer.Target.ActiveBuildConfiguration\">1</value>\n   <value type=\"int\" key=\"ProjectExplorer.Target.ActiveDeployConfiguration\">0</value>\n   <value type=\"int\" key=\"ProjectExplorer.Target.ActiveRunConfiguration\">0</value>\n   <valuemap type=\"QVariantMap\" key=\"ProjectExplorer.Target.BuildConfiguration.0\">\n    <value type=\"QString\" key=\"ProjectExplorer.BuildConfiguration.BuildDirectory\">E:/2015/Project/Qt/build-Label-Desktop_Qt_5_4_0_MSVC2013_OpenGL_64bit-Debug</value>\n    <valuemap type=\"QVariantMap\" key=\"ProjectExplorer.BuildConfiguration.BuildStepList.0\">\n     <valuemap type=\"QVariantMap\" key=\"ProjectExplorer.BuildStepList.Step.0\">\n      <value type=\"bool\" key=\"ProjectExplorer.BuildStep.Enabled\">true</value>\n      <value type=\"QString\" key=\"ProjectExplorer.ProjectConfiguration.DefaultDisplayName\">qmake</value>\n      <value type=\"QString\" key=\"ProjectExplorer.ProjectConfiguration.DisplayName\"></value>\n      <value type=\"QString\" key=\"ProjectExplorer.ProjectConfiguration.Id\">QtProjectManager.QMakeBuildStep</value>\n      <value type=\"bool\" key=\"QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibrary\">false</value>\n      <value type=\"bool\" key=\"QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibraryAuto\">true</value>\n      <value type=\"QString\" key=\"QtProjectManager.QMakeBuildStep.QMakeArguments\"></value>\n      <value type=\"bool\" key=\"QtProjectManager.QMakeBuildStep.QMakeForced\">false</value>\n      <value type=\"bool\" key=\"QtProjectManager.QMakeBuildStep.UseQtQuickCompiler\">false</value>\n     </valuemap>\n     <valuemap type=\"QVariantMap\" key=\"ProjectExplorer.BuildStepList.Step.1\">\n      <value type=\"bool\" key=\"ProjectExplorer.BuildStep.Enabled\">true</value>\n      <value type=\"QString\" key=\"ProjectExplorer.ProjectConfiguration.DefaultDisplayName\">Make</value>\n      <value type=\"QString\" key=\"ProjectExplorer.ProjectConfiguration.DisplayName\"></value>\n      <value type=\"QString\" key=\"ProjectExplorer.ProjectConfiguration.Id\">Qt4ProjectManager.MakeStep</value>\n      <valuelist type=\"QVariantList\" key=\"Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments\"/>\n      <value type=\"bool\" key=\"Qt4ProjectManager.MakeStep.Clean\">false</value>\n      <value type=\"QString\" key=\"Qt4ProjectManager.MakeStep.MakeArguments\"></value>\n      <value type=\"QString\" key=\"Qt4ProjectManager.MakeStep.MakeCommand\"></value>\n     </valuemap>\n     <value type=\"int\" key=\"ProjectExplorer.BuildStepList.StepsCount\">2</value>\n     <value type=\"QString\" key=\"ProjectExplorer.ProjectConfiguration.DefaultDisplayName\">构建</value>\n     <value type=\"QString\" key=\"ProjectExplorer.ProjectConfiguration.DisplayName\"></value>\n     <value type=\"QString\" key=\"ProjectExplorer.ProjectConfiguration.Id\">ProjectExplorer.BuildSteps.Build</value>\n    </valuemap>\n    <valuemap type=\"QVariantMap\" key=\"ProjectExplorer.BuildConfiguration.BuildStepList.1\">\n     <valuemap type=\"QVariantMap\" key=\"ProjectExplorer.BuildStepList.Step.0\">\n      <value type=\"bool\" key=\"ProjectExplorer.BuildStep.Enabled\">true</value>\n      <value type=\"QString\" key=\"ProjectExplorer.ProjectConfiguration.DefaultDisplayName\">Make</value>\n      <value type=\"QString\" key=\"ProjectExplorer.ProjectConfiguration.DisplayName\"></value>\n      <value type=\"QString\" key=\"ProjectExplorer.ProjectConfiguration.Id\">Qt4ProjectManager.MakeStep</value>\n      <valuelist type=\"QVariantList\" key=\"Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments\"/>\n      <value type=\"bool\" key=\"Qt4ProjectManager.MakeStep.Clean\">true</value>\n      <value type=\"QString\" key=\"Qt4ProjectManager.MakeStep.MakeArguments\">clean</value>\n      <value type=\"QString\" key=\"Qt4ProjectManager.MakeStep.MakeCommand\"></value>\n     </valuemap>\n     <value type=\"int\" key=\"ProjectExplorer.BuildStepList.StepsCount\">1</value>\n     <value type=\"QString\" key=\"ProjectExplorer.ProjectConfiguration.DefaultDisplayName\">清理</value>\n     <value type=\"QString\" key=\"ProjectExplorer.ProjectConfiguration.DisplayName\"></value>\n     <value type=\"QString\" key=\"ProjectExplorer.ProjectConfiguration.Id\">ProjectExplorer.BuildSteps.Clean</value>\n    </valuemap>\n    <value type=\"int\" key=\"ProjectExplorer.BuildConfiguration.BuildStepListCount\">2</value>\n    <value type=\"bool\" key=\"ProjectExplorer.BuildConfiguration.ClearSystemEnvironment\">false</value>\n    <valuelist type=\"QVariantList\" key=\"ProjectExplorer.BuildConfiguration.UserEnvironmentChanges\"/>\n    <value type=\"QString\" key=\"ProjectExplorer.ProjectConfiguration.DefaultDisplayName\">Debug</value>\n    <value type=\"QString\" key=\"ProjectExplorer.ProjectConfiguration.DisplayName\"></value>\n    <value type=\"QString\" key=\"ProjectExplorer.ProjectConfiguration.Id\">Qt4ProjectManager.Qt4BuildConfiguration</value>\n    <value type=\"int\" key=\"Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration\">2</value>\n    <value type=\"bool\" key=\"Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild\">true</value>\n   </valuemap>\n   <valuemap type=\"QVariantMap\" key=\"ProjectExplorer.Target.BuildConfiguration.1\">\n    <value type=\"QString\" key=\"ProjectExplorer.BuildConfiguration.BuildDirectory\">E:/2015/Project/Qt/build-Label-Desktop_Qt_5_4_0_MSVC2013_OpenGL_64bit-Release</value>\n    <valuemap type=\"QVariantMap\" key=\"ProjectExplorer.BuildConfiguration.BuildStepList.0\">\n     <valuemap type=\"QVariantMap\" key=\"ProjectExplorer.BuildStepList.Step.0\">\n      <value type=\"bool\" key=\"ProjectExplorer.BuildStep.Enabled\">true</value>\n      <value type=\"QString\" key=\"ProjectExplorer.ProjectConfiguration.DefaultDisplayName\">qmake</value>\n      <value type=\"QString\" key=\"ProjectExplorer.ProjectConfiguration.DisplayName\"></value>\n      <value type=\"QString\" key=\"ProjectExplorer.ProjectConfiguration.Id\">QtProjectManager.QMakeBuildStep</value>\n      <value type=\"bool\" key=\"QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibrary\">false</value>\n      <value type=\"bool\" key=\"QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibraryAuto\">true</value>\n      <value type=\"QString\" key=\"QtProjectManager.QMakeBuildStep.QMakeArguments\"></value>\n      <value type=\"bool\" key=\"QtProjectManager.QMakeBuildStep.QMakeForced\">false</value>\n      <value type=\"bool\" key=\"QtProjectManager.QMakeBuildStep.UseQtQuickCompiler\">false</value>\n     </valuemap>\n     <valuemap type=\"QVariantMap\" key=\"ProjectExplorer.BuildStepList.Step.1\">\n      <value type=\"bool\" key=\"ProjectExplorer.BuildStep.Enabled\">true</value>\n      <value type=\"QString\" key=\"ProjectExplorer.ProjectConfiguration.DefaultDisplayName\">Make</value>\n      <value type=\"QString\" key=\"ProjectExplorer.ProjectConfiguration.DisplayName\"></value>\n      <value type=\"QString\" key=\"ProjectExplorer.ProjectConfiguration.Id\">Qt4ProjectManager.MakeStep</value>\n      <valuelist type=\"QVariantList\" key=\"Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments\"/>\n      <value type=\"bool\" key=\"Qt4ProjectManager.MakeStep.Clean\">false</value>\n      <value type=\"QString\" key=\"Qt4ProjectManager.MakeStep.MakeArguments\"></value>\n      <value type=\"QString\" key=\"Qt4ProjectManager.MakeStep.MakeCommand\"></value>\n     </valuemap>\n     <value type=\"int\" key=\"ProjectExplorer.BuildStepList.StepsCount\">2</value>\n     <value type=\"QString\" key=\"ProjectExplorer.ProjectConfiguration.DefaultDisplayName\">构建</value>\n     <value type=\"QString\" key=\"ProjectExplorer.ProjectConfiguration.DisplayName\"></value>\n     <value type=\"QString\" key=\"ProjectExplorer.ProjectConfiguration.Id\">ProjectExplorer.BuildSteps.Build</value>\n    </valuemap>\n    <valuemap type=\"QVariantMap\" key=\"ProjectExplorer.BuildConfiguration.BuildStepList.1\">\n     <valuemap type=\"QVariantMap\" key=\"ProjectExplorer.BuildStepList.Step.0\">\n      <value type=\"bool\" key=\"ProjectExplorer.BuildStep.Enabled\">true</value>\n      <value type=\"QString\" key=\"ProjectExplorer.ProjectConfiguration.DefaultDisplayName\">Make</value>\n      <value type=\"QString\" key=\"ProjectExplorer.ProjectConfiguration.DisplayName\"></value>\n      <value type=\"QString\" key=\"ProjectExplorer.ProjectConfiguration.Id\">Qt4ProjectManager.MakeStep</value>\n      <valuelist type=\"QVariantList\" key=\"Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments\"/>\n      <value type=\"bool\" key=\"Qt4ProjectManager.MakeStep.Clean\">true</value>\n      <value type=\"QString\" key=\"Qt4ProjectManager.MakeStep.MakeArguments\">clean</value>\n      <value type=\"QString\" key=\"Qt4ProjectManager.MakeStep.MakeCommand\"></value>\n     </valuemap>\n     <value type=\"int\" key=\"ProjectExplorer.BuildStepList.StepsCount\">1</value>\n     <value type=\"QString\" key=\"ProjectExplorer.ProjectConfiguration.DefaultDisplayName\">清理</value>\n     <value type=\"QString\" key=\"ProjectExplorer.ProjectConfiguration.DisplayName\"></value>\n     <value type=\"QString\" key=\"ProjectExplorer.ProjectConfiguration.Id\">ProjectExplorer.BuildSteps.Clean</value>\n    </valuemap>\n    <value type=\"int\" key=\"ProjectExplorer.BuildConfiguration.BuildStepListCount\">2</value>\n    <value type=\"bool\" key=\"ProjectExplorer.BuildConfiguration.ClearSystemEnvironment\">false</value>\n    <valuelist type=\"QVariantList\" key=\"ProjectExplorer.BuildConfiguration.UserEnvironmentChanges\"/>\n    <value type=\"QString\" key=\"ProjectExplorer.ProjectConfiguration.DefaultDisplayName\">Release</value>\n    <value type=\"QString\" key=\"ProjectExplorer.ProjectConfiguration.DisplayName\"></value>\n    <value type=\"QString\" key=\"ProjectExplorer.ProjectConfiguration.Id\">Qt4ProjectManager.Qt4BuildConfiguration</value>\n    <value type=\"int\" key=\"Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration\">0</value>\n    <value type=\"bool\" key=\"Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild\">true</value>\n   </valuemap>\n   <value type=\"int\" key=\"ProjectExplorer.Target.BuildConfigurationCount\">2</value>\n   <valuemap type=\"QVariantMap\" key=\"ProjectExplorer.Target.DeployConfiguration.0\">\n    <valuemap type=\"QVariantMap\" key=\"ProjectExplorer.BuildConfiguration.BuildStepList.0\">\n     <value type=\"int\" key=\"ProjectExplorer.BuildStepList.StepsCount\">0</value>\n     <value type=\"QString\" key=\"ProjectExplorer.ProjectConfiguration.DefaultDisplayName\">部署</value>\n     <value type=\"QString\" key=\"ProjectExplorer.ProjectConfiguration.DisplayName\"></value>\n     <value type=\"QString\" key=\"ProjectExplorer.ProjectConfiguration.Id\">ProjectExplorer.BuildSteps.Deploy</value>\n    </valuemap>\n    <value type=\"int\" key=\"ProjectExplorer.BuildConfiguration.BuildStepListCount\">1</value>\n    <value type=\"QString\" key=\"ProjectExplorer.ProjectConfiguration.DefaultDisplayName\">在本地部署</value>\n    <value type=\"QString\" key=\"ProjectExplorer.ProjectConfiguration.DisplayName\"></value>\n    <value type=\"QString\" key=\"ProjectExplorer.ProjectConfiguration.Id\">ProjectExplorer.DefaultDeployConfiguration</value>\n   </valuemap>\n   <value type=\"int\" key=\"ProjectExplorer.Target.DeployConfigurationCount\">1</value>\n   <valuemap type=\"QVariantMap\" key=\"ProjectExplorer.Target.PluginSettings\"/>\n   <valuemap type=\"QVariantMap\" key=\"ProjectExplorer.Target.RunConfiguration.0\">\n    <valuelist type=\"QVariantList\" key=\"Analyzer.Valgrind.AddedSuppressionFiles\"/>\n    <value type=\"bool\" key=\"Analyzer.Valgrind.Callgrind.CollectBusEvents\">false</value>\n    <value type=\"bool\" key=\"Analyzer.Valgrind.Callgrind.CollectSystime\">false</value>\n    <value type=\"bool\" key=\"Analyzer.Valgrind.Callgrind.EnableBranchSim\">false</value>\n    <value type=\"bool\" key=\"Analyzer.Valgrind.Callgrind.EnableCacheSim\">false</value>\n    <value type=\"bool\" key=\"Analyzer.Valgrind.Callgrind.EnableEventToolTips\">true</value>\n    <value type=\"double\" key=\"Analyzer.Valgrind.Callgrind.MinimumCostRatio\">0.01</value>\n    <value type=\"double\" key=\"Analyzer.Valgrind.Callgrind.VisualisationMinimumCostRatio\">10</value>\n    <value type=\"bool\" key=\"Analyzer.Valgrind.FilterExternalIssues\">true</value>\n    <value type=\"int\" key=\"Analyzer.Valgrind.LeakCheckOnFinish\">1</value>\n    <value type=\"int\" key=\"Analyzer.Valgrind.NumCallers\">25</value>\n    <valuelist type=\"QVariantList\" key=\"Analyzer.Valgrind.RemovedSuppressionFiles\"/>\n    <value type=\"int\" key=\"Analyzer.Valgrind.SelfModifyingCodeDetection\">1</value>\n    <value type=\"bool\" key=\"Analyzer.Valgrind.Settings.UseGlobalSettings\">true</value>\n    <value type=\"bool\" key=\"Analyzer.Valgrind.ShowReachable\">false</value>\n    <value type=\"bool\" key=\"Analyzer.Valgrind.TrackOrigins\">true</value>\n    <value type=\"QString\" key=\"Analyzer.Valgrind.ValgrindExecutable\">valgrind</value>\n    <valuelist type=\"QVariantList\" key=\"Analyzer.Valgrind.VisibleErrorKinds\">\n     <value type=\"int\">0</value>\n     <value type=\"int\">1</value>\n     <value type=\"int\">2</value>\n     <value type=\"int\">3</value>\n     <value type=\"int\">4</value>\n     <value type=\"int\">5</value>\n     <value type=\"int\">6</value>\n     <value type=\"int\">7</value>\n     <value type=\"int\">8</value>\n     <value type=\"int\">9</value>\n     <value type=\"int\">10</value>\n     <value type=\"int\">11</value>\n     <value type=\"int\">12</value>\n     <value type=\"int\">13</value>\n     <value type=\"int\">14</value>\n    </valuelist>\n    <value type=\"int\" key=\"PE.EnvironmentAspect.Base\">2</value>\n    <valuelist type=\"QVariantList\" key=\"PE.EnvironmentAspect.Changes\"/>\n    <value type=\"QString\" key=\"ProjectExplorer.ProjectConfiguration.DefaultDisplayName\">Label</value>\n    <value type=\"QString\" key=\"ProjectExplorer.ProjectConfiguration.DisplayName\">Label2</value>\n    <value type=\"QString\" key=\"ProjectExplorer.ProjectConfiguration.Id\">Qt4ProjectManager.Qt4RunConfiguration:E:/2015/Project/Qt/SemiAutoLabel/Label.pro</value>\n    <value type=\"QString\" key=\"Qt4ProjectManager.Qt4RunConfiguration.CommandLineArguments\"></value>\n    <value type=\"QString\" key=\"Qt4ProjectManager.Qt4RunConfiguration.ProFile\">Label.pro</value>\n    <value type=\"bool\" key=\"Qt4ProjectManager.Qt4RunConfiguration.UseDyldImageSuffix\">false</value>\n    <value type=\"bool\" key=\"Qt4ProjectManager.Qt4RunConfiguration.UseTerminal\">false</value>\n    <value type=\"QString\" key=\"Qt4ProjectManager.Qt4RunConfiguration.UserWorkingDirectory\"></value>\n    <value type=\"uint\" key=\"RunConfiguration.QmlDebugServerPort\">3768</value>\n    <value type=\"bool\" key=\"RunConfiguration.UseCppDebugger\">false</value>\n    <value type=\"bool\" key=\"RunConfiguration.UseCppDebuggerAuto\">true</value>\n    <value type=\"bool\" key=\"RunConfiguration.UseMultiProcess\">false</value>\n    <value type=\"bool\" key=\"RunConfiguration.UseQmlDebugger\">false</value>\n    <value type=\"bool\" key=\"RunConfiguration.UseQmlDebuggerAuto\">true</value>\n   </valuemap>\n   <value type=\"int\" key=\"ProjectExplorer.Target.RunConfigurationCount\">1</value>\n  </valuemap>\n </data>\n <data>\n  <variable>ProjectExplorer.Project.TargetCount</variable>\n  <value type=\"int\">1</value>\n </data>\n <data>\n  <variable>ProjectExplorer.Project.Updater.FileVersion</variable>\n  <value type=\"int\">18</value>\n </data>\n <data>\n  <variable>Version</variable>\n  <value type=\"int\">18</value>\n </data>\n</qtcreator>\n"
  },
  {
    "path": "src/Label.pro.user.61d9454",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE QtCreatorProject>\n<!-- Written by QtCreator 3.3.0, 2015-04-03T18:53:32. -->\n<qtcreator>\n <data>\n  <variable>EnvironmentId</variable>\n  <value type=\"QByteArray\">{61d94545-019b-4e36-b6c5-2e4867b1f291}</value>\n </data>\n <data>\n  <variable>ProjectExplorer.Project.ActiveTarget</variable>\n  <value type=\"int\">0</value>\n </data>\n <data>\n  <variable>ProjectExplorer.Project.EditorSettings</variable>\n  <valuemap type=\"QVariantMap\">\n   <value type=\"bool\" key=\"EditorConfiguration.AutoIndent\">true</value>\n   <value type=\"bool\" key=\"EditorConfiguration.AutoSpacesForTabs\">false</value>\n   <value type=\"bool\" key=\"EditorConfiguration.CamelCaseNavigation\">true</value>\n   <valuemap type=\"QVariantMap\" key=\"EditorConfiguration.CodeStyle.0\">\n    <value type=\"QString\" key=\"language\">Cpp</value>\n    <valuemap type=\"QVariantMap\" key=\"value\">\n     <value type=\"QByteArray\" key=\"CurrentPreferences\">CppGlobal</value>\n    </valuemap>\n   </valuemap>\n   <valuemap type=\"QVariantMap\" key=\"EditorConfiguration.CodeStyle.1\">\n    <value type=\"QString\" key=\"language\">QmlJS</value>\n    <valuemap type=\"QVariantMap\" key=\"value\">\n     <value type=\"QByteArray\" key=\"CurrentPreferences\">QmlJSGlobal</value>\n    </valuemap>\n   </valuemap>\n   <value type=\"int\" key=\"EditorConfiguration.CodeStyle.Count\">2</value>\n   <value type=\"QByteArray\" key=\"EditorConfiguration.Codec\">UTF-8</value>\n   <value type=\"bool\" key=\"EditorConfiguration.ConstrainTooltips\">false</value>\n   <value type=\"int\" key=\"EditorConfiguration.IndentSize\">4</value>\n   <value type=\"bool\" key=\"EditorConfiguration.KeyboardTooltips\">false</value>\n   <value type=\"int\" key=\"EditorConfiguration.MarginColumn\">80</value>\n   <value type=\"bool\" key=\"EditorConfiguration.MouseHiding\">true</value>\n   <value type=\"bool\" key=\"EditorConfiguration.MouseNavigation\">true</value>\n   <value type=\"int\" key=\"EditorConfiguration.PaddingMode\">1</value>\n   <value type=\"bool\" key=\"EditorConfiguration.ScrollWheelZooming\">true</value>\n   <value type=\"bool\" key=\"EditorConfiguration.ShowMargin\">false</value>\n   <value type=\"int\" key=\"EditorConfiguration.SmartBackspaceBehavior\">0</value>\n   <value type=\"bool\" key=\"EditorConfiguration.SpacesForTabs\">true</value>\n   <value type=\"int\" key=\"EditorConfiguration.TabKeyBehavior\">0</value>\n   <value type=\"int\" key=\"EditorConfiguration.TabSize\">8</value>\n   <value type=\"bool\" key=\"EditorConfiguration.UseGlobal\">true</value>\n   <value type=\"int\" key=\"EditorConfiguration.Utf8BomBehavior\">1</value>\n   <value type=\"bool\" key=\"EditorConfiguration.addFinalNewLine\">true</value>\n   <value type=\"bool\" key=\"EditorConfiguration.cleanIndentation\">true</value>\n   <value type=\"bool\" key=\"EditorConfiguration.cleanWhitespace\">true</value>\n   <value type=\"bool\" key=\"EditorConfiguration.inEntireDocument\">false</value>\n  </valuemap>\n </data>\n <data>\n  <variable>ProjectExplorer.Project.PluginSettings</variable>\n  <valuemap type=\"QVariantMap\"/>\n </data>\n <data>\n  <variable>ProjectExplorer.Project.Target.0</variable>\n  <valuemap type=\"QVariantMap\">\n   <value type=\"QString\" key=\"ProjectExplorer.ProjectConfiguration.DefaultDisplayName\">Desktop Qt 5.4.0 MSVC2013 OpenGL 64bit</value>\n   <value type=\"QString\" key=\"ProjectExplorer.ProjectConfiguration.DisplayName\">Desktop Qt 5.4.0 MSVC2013 OpenGL 64bit</value>\n   <value type=\"QString\" key=\"ProjectExplorer.ProjectConfiguration.Id\">qt.54.win64_msvc2013_64_opengl_kit</value>\n   <value type=\"int\" key=\"ProjectExplorer.Target.ActiveBuildConfiguration\">1</value>\n   <value type=\"int\" key=\"ProjectExplorer.Target.ActiveDeployConfiguration\">0</value>\n   <value type=\"int\" key=\"ProjectExplorer.Target.ActiveRunConfiguration\">0</value>\n   <valuemap type=\"QVariantMap\" key=\"ProjectExplorer.Target.BuildConfiguration.0\">\n    <value type=\"QString\" key=\"ProjectExplorer.BuildConfiguration.BuildDirectory\">E:/2015/Project/Qt/build-Label-Desktop_Qt_5_4_0_MSVC2013_OpenGL_64bit-Debug</value>\n    <valuemap type=\"QVariantMap\" key=\"ProjectExplorer.BuildConfiguration.BuildStepList.0\">\n     <valuemap type=\"QVariantMap\" key=\"ProjectExplorer.BuildStepList.Step.0\">\n      <value type=\"bool\" key=\"ProjectExplorer.BuildStep.Enabled\">true</value>\n      <value type=\"QString\" key=\"ProjectExplorer.ProjectConfiguration.DefaultDisplayName\">qmake</value>\n      <value type=\"QString\" key=\"ProjectExplorer.ProjectConfiguration.DisplayName\"></value>\n      <value type=\"QString\" key=\"ProjectExplorer.ProjectConfiguration.Id\">QtProjectManager.QMakeBuildStep</value>\n      <value type=\"bool\" key=\"QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibrary\">false</value>\n      <value type=\"bool\" key=\"QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibraryAuto\">true</value>\n      <value type=\"QString\" key=\"QtProjectManager.QMakeBuildStep.QMakeArguments\"></value>\n      <value type=\"bool\" key=\"QtProjectManager.QMakeBuildStep.QMakeForced\">false</value>\n      <value type=\"bool\" key=\"QtProjectManager.QMakeBuildStep.UseQtQuickCompiler\">false</value>\n     </valuemap>\n     <valuemap type=\"QVariantMap\" key=\"ProjectExplorer.BuildStepList.Step.1\">\n      <value type=\"bool\" key=\"ProjectExplorer.BuildStep.Enabled\">true</value>\n      <value type=\"QString\" key=\"ProjectExplorer.ProjectConfiguration.DefaultDisplayName\">Make</value>\n      <value type=\"QString\" key=\"ProjectExplorer.ProjectConfiguration.DisplayName\"></value>\n      <value type=\"QString\" key=\"ProjectExplorer.ProjectConfiguration.Id\">Qt4ProjectManager.MakeStep</value>\n      <valuelist type=\"QVariantList\" key=\"Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments\"/>\n      <value type=\"bool\" key=\"Qt4ProjectManager.MakeStep.Clean\">false</value>\n      <value type=\"QString\" key=\"Qt4ProjectManager.MakeStep.MakeArguments\"></value>\n      <value type=\"QString\" key=\"Qt4ProjectManager.MakeStep.MakeCommand\"></value>\n     </valuemap>\n     <value type=\"int\" key=\"ProjectExplorer.BuildStepList.StepsCount\">2</value>\n     <value type=\"QString\" key=\"ProjectExplorer.ProjectConfiguration.DefaultDisplayName\">构建</value>\n     <value type=\"QString\" key=\"ProjectExplorer.ProjectConfiguration.DisplayName\"></value>\n     <value type=\"QString\" key=\"ProjectExplorer.ProjectConfiguration.Id\">ProjectExplorer.BuildSteps.Build</value>\n    </valuemap>\n    <valuemap type=\"QVariantMap\" key=\"ProjectExplorer.BuildConfiguration.BuildStepList.1\">\n     <valuemap type=\"QVariantMap\" key=\"ProjectExplorer.BuildStepList.Step.0\">\n      <value type=\"bool\" key=\"ProjectExplorer.BuildStep.Enabled\">true</value>\n      <value type=\"QString\" key=\"ProjectExplorer.ProjectConfiguration.DefaultDisplayName\">Make</value>\n      <value type=\"QString\" key=\"ProjectExplorer.ProjectConfiguration.DisplayName\"></value>\n      <value type=\"QString\" key=\"ProjectExplorer.ProjectConfiguration.Id\">Qt4ProjectManager.MakeStep</value>\n      <valuelist type=\"QVariantList\" key=\"Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments\"/>\n      <value type=\"bool\" key=\"Qt4ProjectManager.MakeStep.Clean\">true</value>\n      <value type=\"QString\" key=\"Qt4ProjectManager.MakeStep.MakeArguments\">clean</value>\n      <value type=\"QString\" key=\"Qt4ProjectManager.MakeStep.MakeCommand\"></value>\n     </valuemap>\n     <value type=\"int\" key=\"ProjectExplorer.BuildStepList.StepsCount\">1</value>\n     <value type=\"QString\" key=\"ProjectExplorer.ProjectConfiguration.DefaultDisplayName\">清理</value>\n     <value type=\"QString\" key=\"ProjectExplorer.ProjectConfiguration.DisplayName\"></value>\n     <value type=\"QString\" key=\"ProjectExplorer.ProjectConfiguration.Id\">ProjectExplorer.BuildSteps.Clean</value>\n    </valuemap>\n    <value type=\"int\" key=\"ProjectExplorer.BuildConfiguration.BuildStepListCount\">2</value>\n    <value type=\"bool\" key=\"ProjectExplorer.BuildConfiguration.ClearSystemEnvironment\">false</value>\n    <valuelist type=\"QVariantList\" key=\"ProjectExplorer.BuildConfiguration.UserEnvironmentChanges\"/>\n    <value type=\"QString\" key=\"ProjectExplorer.ProjectConfiguration.DefaultDisplayName\">Debug</value>\n    <value type=\"QString\" key=\"ProjectExplorer.ProjectConfiguration.DisplayName\"></value>\n    <value type=\"QString\" key=\"ProjectExplorer.ProjectConfiguration.Id\">Qt4ProjectManager.Qt4BuildConfiguration</value>\n    <value type=\"int\" key=\"Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration\">2</value>\n    <value type=\"bool\" key=\"Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild\">true</value>\n   </valuemap>\n   <valuemap type=\"QVariantMap\" key=\"ProjectExplorer.Target.BuildConfiguration.1\">\n    <value type=\"QString\" key=\"ProjectExplorer.BuildConfiguration.BuildDirectory\">E:/2015/Project/Qt/build-Label-Desktop_Qt_5_4_0_MSVC2013_OpenGL_64bit-Release</value>\n    <valuemap type=\"QVariantMap\" key=\"ProjectExplorer.BuildConfiguration.BuildStepList.0\">\n     <valuemap type=\"QVariantMap\" key=\"ProjectExplorer.BuildStepList.Step.0\">\n      <value type=\"bool\" key=\"ProjectExplorer.BuildStep.Enabled\">true</value>\n      <value type=\"QString\" key=\"ProjectExplorer.ProjectConfiguration.DefaultDisplayName\">qmake</value>\n      <value type=\"QString\" key=\"ProjectExplorer.ProjectConfiguration.DisplayName\"></value>\n      <value type=\"QString\" key=\"ProjectExplorer.ProjectConfiguration.Id\">QtProjectManager.QMakeBuildStep</value>\n      <value type=\"bool\" key=\"QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibrary\">false</value>\n      <value type=\"bool\" key=\"QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibraryAuto\">true</value>\n      <value type=\"QString\" key=\"QtProjectManager.QMakeBuildStep.QMakeArguments\"></value>\n      <value type=\"bool\" key=\"QtProjectManager.QMakeBuildStep.QMakeForced\">false</value>\n      <value type=\"bool\" key=\"QtProjectManager.QMakeBuildStep.UseQtQuickCompiler\">false</value>\n     </valuemap>\n     <valuemap type=\"QVariantMap\" key=\"ProjectExplorer.BuildStepList.Step.1\">\n      <value type=\"bool\" key=\"ProjectExplorer.BuildStep.Enabled\">true</value>\n      <value type=\"QString\" key=\"ProjectExplorer.ProjectConfiguration.DefaultDisplayName\">Make</value>\n      <value type=\"QString\" key=\"ProjectExplorer.ProjectConfiguration.DisplayName\"></value>\n      <value type=\"QString\" key=\"ProjectExplorer.ProjectConfiguration.Id\">Qt4ProjectManager.MakeStep</value>\n      <valuelist type=\"QVariantList\" key=\"Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments\"/>\n      <value type=\"bool\" key=\"Qt4ProjectManager.MakeStep.Clean\">false</value>\n      <value type=\"QString\" key=\"Qt4ProjectManager.MakeStep.MakeArguments\"></value>\n      <value type=\"QString\" key=\"Qt4ProjectManager.MakeStep.MakeCommand\"></value>\n     </valuemap>\n     <value type=\"int\" key=\"ProjectExplorer.BuildStepList.StepsCount\">2</value>\n     <value type=\"QString\" key=\"ProjectExplorer.ProjectConfiguration.DefaultDisplayName\">构建</value>\n     <value type=\"QString\" key=\"ProjectExplorer.ProjectConfiguration.DisplayName\"></value>\n     <value type=\"QString\" key=\"ProjectExplorer.ProjectConfiguration.Id\">ProjectExplorer.BuildSteps.Build</value>\n    </valuemap>\n    <valuemap type=\"QVariantMap\" key=\"ProjectExplorer.BuildConfiguration.BuildStepList.1\">\n     <valuemap type=\"QVariantMap\" key=\"ProjectExplorer.BuildStepList.Step.0\">\n      <value type=\"bool\" key=\"ProjectExplorer.BuildStep.Enabled\">true</value>\n      <value type=\"QString\" key=\"ProjectExplorer.ProjectConfiguration.DefaultDisplayName\">Make</value>\n      <value type=\"QString\" key=\"ProjectExplorer.ProjectConfiguration.DisplayName\"></value>\n      <value type=\"QString\" key=\"ProjectExplorer.ProjectConfiguration.Id\">Qt4ProjectManager.MakeStep</value>\n      <valuelist type=\"QVariantList\" key=\"Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments\"/>\n      <value type=\"bool\" key=\"Qt4ProjectManager.MakeStep.Clean\">true</value>\n      <value type=\"QString\" key=\"Qt4ProjectManager.MakeStep.MakeArguments\">clean</value>\n      <value type=\"QString\" key=\"Qt4ProjectManager.MakeStep.MakeCommand\"></value>\n     </valuemap>\n     <value type=\"int\" key=\"ProjectExplorer.BuildStepList.StepsCount\">1</value>\n     <value type=\"QString\" key=\"ProjectExplorer.ProjectConfiguration.DefaultDisplayName\">清理</value>\n     <value type=\"QString\" key=\"ProjectExplorer.ProjectConfiguration.DisplayName\"></value>\n     <value type=\"QString\" key=\"ProjectExplorer.ProjectConfiguration.Id\">ProjectExplorer.BuildSteps.Clean</value>\n    </valuemap>\n    <value type=\"int\" key=\"ProjectExplorer.BuildConfiguration.BuildStepListCount\">2</value>\n    <value type=\"bool\" key=\"ProjectExplorer.BuildConfiguration.ClearSystemEnvironment\">false</value>\n    <valuelist type=\"QVariantList\" key=\"ProjectExplorer.BuildConfiguration.UserEnvironmentChanges\"/>\n    <value type=\"QString\" key=\"ProjectExplorer.ProjectConfiguration.DefaultDisplayName\">Release</value>\n    <value type=\"QString\" key=\"ProjectExplorer.ProjectConfiguration.DisplayName\"></value>\n    <value type=\"QString\" key=\"ProjectExplorer.ProjectConfiguration.Id\">Qt4ProjectManager.Qt4BuildConfiguration</value>\n    <value type=\"int\" key=\"Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration\">0</value>\n    <value type=\"bool\" key=\"Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild\">true</value>\n   </valuemap>\n   <value type=\"int\" key=\"ProjectExplorer.Target.BuildConfigurationCount\">2</value>\n   <valuemap type=\"QVariantMap\" key=\"ProjectExplorer.Target.DeployConfiguration.0\">\n    <valuemap type=\"QVariantMap\" key=\"ProjectExplorer.BuildConfiguration.BuildStepList.0\">\n     <value type=\"int\" key=\"ProjectExplorer.BuildStepList.StepsCount\">0</value>\n     <value type=\"QString\" key=\"ProjectExplorer.ProjectConfiguration.DefaultDisplayName\">部署</value>\n     <value type=\"QString\" key=\"ProjectExplorer.ProjectConfiguration.DisplayName\"></value>\n     <value type=\"QString\" key=\"ProjectExplorer.ProjectConfiguration.Id\">ProjectExplorer.BuildSteps.Deploy</value>\n    </valuemap>\n    <value type=\"int\" key=\"ProjectExplorer.BuildConfiguration.BuildStepListCount\">1</value>\n    <value type=\"QString\" key=\"ProjectExplorer.ProjectConfiguration.DefaultDisplayName\">在本地部署</value>\n    <value type=\"QString\" key=\"ProjectExplorer.ProjectConfiguration.DisplayName\"></value>\n    <value type=\"QString\" key=\"ProjectExplorer.ProjectConfiguration.Id\">ProjectExplorer.DefaultDeployConfiguration</value>\n   </valuemap>\n   <value type=\"int\" key=\"ProjectExplorer.Target.DeployConfigurationCount\">1</value>\n   <valuemap type=\"QVariantMap\" key=\"ProjectExplorer.Target.PluginSettings\"/>\n   <valuemap type=\"QVariantMap\" key=\"ProjectExplorer.Target.RunConfiguration.0\">\n    <valuelist type=\"QVariantList\" key=\"Analyzer.Valgrind.AddedSuppressionFiles\"/>\n    <value type=\"bool\" key=\"Analyzer.Valgrind.Callgrind.CollectBusEvents\">false</value>\n    <value type=\"bool\" key=\"Analyzer.Valgrind.Callgrind.CollectSystime\">false</value>\n    <value type=\"bool\" key=\"Analyzer.Valgrind.Callgrind.EnableBranchSim\">false</value>\n    <value type=\"bool\" key=\"Analyzer.Valgrind.Callgrind.EnableCacheSim\">false</value>\n    <value type=\"bool\" key=\"Analyzer.Valgrind.Callgrind.EnableEventToolTips\">true</value>\n    <value type=\"double\" key=\"Analyzer.Valgrind.Callgrind.MinimumCostRatio\">0.01</value>\n    <value type=\"double\" key=\"Analyzer.Valgrind.Callgrind.VisualisationMinimumCostRatio\">10</value>\n    <value type=\"bool\" key=\"Analyzer.Valgrind.FilterExternalIssues\">true</value>\n    <value type=\"int\" key=\"Analyzer.Valgrind.LeakCheckOnFinish\">1</value>\n    <value type=\"int\" key=\"Analyzer.Valgrind.NumCallers\">25</value>\n    <valuelist type=\"QVariantList\" key=\"Analyzer.Valgrind.RemovedSuppressionFiles\"/>\n    <value type=\"int\" key=\"Analyzer.Valgrind.SelfModifyingCodeDetection\">1</value>\n    <value type=\"bool\" key=\"Analyzer.Valgrind.Settings.UseGlobalSettings\">true</value>\n    <value type=\"bool\" key=\"Analyzer.Valgrind.ShowReachable\">false</value>\n    <value type=\"bool\" key=\"Analyzer.Valgrind.TrackOrigins\">true</value>\n    <value type=\"QString\" key=\"Analyzer.Valgrind.ValgrindExecutable\">valgrind</value>\n    <valuelist type=\"QVariantList\" key=\"Analyzer.Valgrind.VisibleErrorKinds\">\n     <value type=\"int\">0</value>\n     <value type=\"int\">1</value>\n     <value type=\"int\">2</value>\n     <value type=\"int\">3</value>\n     <value type=\"int\">4</value>\n     <value type=\"int\">5</value>\n     <value type=\"int\">6</value>\n     <value type=\"int\">7</value>\n     <value type=\"int\">8</value>\n     <value type=\"int\">9</value>\n     <value type=\"int\">10</value>\n     <value type=\"int\">11</value>\n     <value type=\"int\">12</value>\n     <value type=\"int\">13</value>\n     <value type=\"int\">14</value>\n    </valuelist>\n    <value type=\"int\" key=\"PE.EnvironmentAspect.Base\">2</value>\n    <valuelist type=\"QVariantList\" key=\"PE.EnvironmentAspect.Changes\"/>\n    <value type=\"QString\" key=\"ProjectExplorer.ProjectConfiguration.DefaultDisplayName\">Label</value>\n    <value type=\"QString\" key=\"ProjectExplorer.ProjectConfiguration.DisplayName\"></value>\n    <value type=\"QString\" key=\"ProjectExplorer.ProjectConfiguration.Id\">Qt4ProjectManager.Qt4RunConfiguration:E:/2015/Project/Qt/Label/Label.pro</value>\n    <value type=\"QString\" key=\"Qt4ProjectManager.Qt4RunConfiguration.CommandLineArguments\"></value>\n    <value type=\"QString\" key=\"Qt4ProjectManager.Qt4RunConfiguration.ProFile\">Label.pro</value>\n    <value type=\"bool\" key=\"Qt4ProjectManager.Qt4RunConfiguration.UseDyldImageSuffix\">false</value>\n    <value type=\"bool\" key=\"Qt4ProjectManager.Qt4RunConfiguration.UseTerminal\">false</value>\n    <value type=\"QString\" key=\"Qt4ProjectManager.Qt4RunConfiguration.UserWorkingDirectory\"></value>\n    <value type=\"uint\" key=\"RunConfiguration.QmlDebugServerPort\">3768</value>\n    <value type=\"bool\" key=\"RunConfiguration.UseCppDebugger\">false</value>\n    <value type=\"bool\" key=\"RunConfiguration.UseCppDebuggerAuto\">true</value>\n    <value type=\"bool\" key=\"RunConfiguration.UseMultiProcess\">false</value>\n    <value type=\"bool\" key=\"RunConfiguration.UseQmlDebugger\">false</value>\n    <value type=\"bool\" key=\"RunConfiguration.UseQmlDebuggerAuto\">true</value>\n   </valuemap>\n   <value type=\"int\" key=\"ProjectExplorer.Target.RunConfigurationCount\">1</value>\n  </valuemap>\n </data>\n <data>\n  <variable>ProjectExplorer.Project.TargetCount</variable>\n  <value type=\"int\">1</value>\n </data>\n <data>\n  <variable>ProjectExplorer.Project.Updater.FileVersion</variable>\n  <value type=\"int\">18</value>\n </data>\n <data>\n  <variable>Version</variable>\n  <value type=\"int\">18</value>\n </data>\n</qtcreator>\n"
  },
  {
    "path": "src/Label.pro.user.722262d",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE QtCreatorProject>\n<!-- Written by QtCreator 3.3.1, 2015-04-08T17:44:51. -->\n<qtcreator>\n <data>\n  <variable>EnvironmentId</variable>\n  <value type=\"QByteArray\">{722262d8-1a19-4320-a67d-98abab6abdea}</value>\n </data>\n <data>\n  <variable>ProjectExplorer.Project.ActiveTarget</variable>\n  <value type=\"int\">0</value>\n </data>\n <data>\n  <variable>ProjectExplorer.Project.EditorSettings</variable>\n  <valuemap type=\"QVariantMap\">\n   <value type=\"bool\" key=\"EditorConfiguration.AutoIndent\">true</value>\n   <value type=\"bool\" key=\"EditorConfiguration.AutoSpacesForTabs\">false</value>\n   <value type=\"bool\" key=\"EditorConfiguration.CamelCaseNavigation\">true</value>\n   <valuemap type=\"QVariantMap\" key=\"EditorConfiguration.CodeStyle.0\">\n    <value type=\"QString\" key=\"language\">Cpp</value>\n    <valuemap type=\"QVariantMap\" key=\"value\">\n     <value type=\"QByteArray\" key=\"CurrentPreferences\">CppGlobal</value>\n    </valuemap>\n   </valuemap>\n   <valuemap type=\"QVariantMap\" key=\"EditorConfiguration.CodeStyle.1\">\n    <value type=\"QString\" key=\"language\">QmlJS</value>\n    <valuemap type=\"QVariantMap\" key=\"value\">\n     <value type=\"QByteArray\" key=\"CurrentPreferences\">QmlJSGlobal</value>\n    </valuemap>\n   </valuemap>\n   <value type=\"int\" key=\"EditorConfiguration.CodeStyle.Count\">2</value>\n   <value type=\"QByteArray\" key=\"EditorConfiguration.Codec\">UTF-8</value>\n   <value type=\"bool\" key=\"EditorConfiguration.ConstrainTooltips\">false</value>\n   <value type=\"int\" key=\"EditorConfiguration.IndentSize\">4</value>\n   <value type=\"bool\" key=\"EditorConfiguration.KeyboardTooltips\">false</value>\n   <value type=\"int\" key=\"EditorConfiguration.MarginColumn\">80</value>\n   <value type=\"bool\" key=\"EditorConfiguration.MouseHiding\">true</value>\n   <value type=\"bool\" key=\"EditorConfiguration.MouseNavigation\">true</value>\n   <value type=\"int\" key=\"EditorConfiguration.PaddingMode\">1</value>\n   <value type=\"bool\" key=\"EditorConfiguration.ScrollWheelZooming\">true</value>\n   <value type=\"bool\" key=\"EditorConfiguration.ShowMargin\">false</value>\n   <value type=\"int\" key=\"EditorConfiguration.SmartBackspaceBehavior\">0</value>\n   <value type=\"bool\" key=\"EditorConfiguration.SpacesForTabs\">true</value>\n   <value type=\"int\" key=\"EditorConfiguration.TabKeyBehavior\">0</value>\n   <value type=\"int\" key=\"EditorConfiguration.TabSize\">8</value>\n   <value type=\"bool\" key=\"EditorConfiguration.UseGlobal\">true</value>\n   <value type=\"int\" key=\"EditorConfiguration.Utf8BomBehavior\">1</value>\n   <value type=\"bool\" key=\"EditorConfiguration.addFinalNewLine\">true</value>\n   <value type=\"bool\" key=\"EditorConfiguration.cleanIndentation\">true</value>\n   <value type=\"bool\" key=\"EditorConfiguration.cleanWhitespace\">true</value>\n   <value type=\"bool\" key=\"EditorConfiguration.inEntireDocument\">false</value>\n  </valuemap>\n </data>\n <data>\n  <variable>ProjectExplorer.Project.PluginSettings</variable>\n  <valuemap type=\"QVariantMap\"/>\n </data>\n <data>\n  <variable>ProjectExplorer.Project.Target.0</variable>\n  <valuemap type=\"QVariantMap\">\n   <value type=\"QString\" key=\"ProjectExplorer.ProjectConfiguration.DefaultDisplayName\">Desktop Qt 5.4.1 MSVC2013 OpenGL 64bit</value>\n   <value type=\"QString\" key=\"ProjectExplorer.ProjectConfiguration.DisplayName\">Desktop Qt 5.4.1 MSVC2013 OpenGL 64bit</value>\n   <value type=\"QString\" key=\"ProjectExplorer.ProjectConfiguration.Id\">qt.54.win64_msvc2013_64_opengl_kit</value>\n   <value type=\"int\" key=\"ProjectExplorer.Target.ActiveBuildConfiguration\">1</value>\n   <value type=\"int\" key=\"ProjectExplorer.Target.ActiveDeployConfiguration\">0</value>\n   <value type=\"int\" key=\"ProjectExplorer.Target.ActiveRunConfiguration\">0</value>\n   <valuemap type=\"QVariantMap\" key=\"ProjectExplorer.Target.BuildConfiguration.0\">\n    <value type=\"QString\" key=\"ProjectExplorer.BuildConfiguration.BuildDirectory\">C:/Users/culan/Desktop/build-Label-Desktop_Qt_5_4_1_MSVC2013_OpenGL_64bit-Debug</value>\n    <valuemap type=\"QVariantMap\" key=\"ProjectExplorer.BuildConfiguration.BuildStepList.0\">\n     <valuemap type=\"QVariantMap\" key=\"ProjectExplorer.BuildStepList.Step.0\">\n      <value type=\"bool\" key=\"ProjectExplorer.BuildStep.Enabled\">true</value>\n      <value type=\"QString\" key=\"ProjectExplorer.ProjectConfiguration.DefaultDisplayName\">qmake</value>\n      <value type=\"QString\" key=\"ProjectExplorer.ProjectConfiguration.DisplayName\"></value>\n      <value type=\"QString\" key=\"ProjectExplorer.ProjectConfiguration.Id\">QtProjectManager.QMakeBuildStep</value>\n      <value type=\"bool\" key=\"QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibrary\">false</value>\n      <value type=\"bool\" key=\"QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibraryAuto\">true</value>\n      <value type=\"QString\" key=\"QtProjectManager.QMakeBuildStep.QMakeArguments\"></value>\n      <value type=\"bool\" key=\"QtProjectManager.QMakeBuildStep.QMakeForced\">false</value>\n      <value type=\"bool\" key=\"QtProjectManager.QMakeBuildStep.UseQtQuickCompiler\">false</value>\n     </valuemap>\n     <valuemap type=\"QVariantMap\" key=\"ProjectExplorer.BuildStepList.Step.1\">\n      <value type=\"bool\" key=\"ProjectExplorer.BuildStep.Enabled\">true</value>\n      <value type=\"QString\" key=\"ProjectExplorer.ProjectConfiguration.DefaultDisplayName\">Make</value>\n      <value type=\"QString\" key=\"ProjectExplorer.ProjectConfiguration.DisplayName\"></value>\n      <value type=\"QString\" key=\"ProjectExplorer.ProjectConfiguration.Id\">Qt4ProjectManager.MakeStep</value>\n      <valuelist type=\"QVariantList\" key=\"Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments\"/>\n      <value type=\"bool\" key=\"Qt4ProjectManager.MakeStep.Clean\">false</value>\n      <value type=\"QString\" key=\"Qt4ProjectManager.MakeStep.MakeArguments\"></value>\n      <value type=\"QString\" key=\"Qt4ProjectManager.MakeStep.MakeCommand\"></value>\n     </valuemap>\n     <value type=\"int\" key=\"ProjectExplorer.BuildStepList.StepsCount\">2</value>\n     <value type=\"QString\" key=\"ProjectExplorer.ProjectConfiguration.DefaultDisplayName\">Build</value>\n     <value type=\"QString\" key=\"ProjectExplorer.ProjectConfiguration.DisplayName\"></value>\n     <value type=\"QString\" key=\"ProjectExplorer.ProjectConfiguration.Id\">ProjectExplorer.BuildSteps.Build</value>\n    </valuemap>\n    <valuemap type=\"QVariantMap\" key=\"ProjectExplorer.BuildConfiguration.BuildStepList.1\">\n     <valuemap type=\"QVariantMap\" key=\"ProjectExplorer.BuildStepList.Step.0\">\n      <value type=\"bool\" key=\"ProjectExplorer.BuildStep.Enabled\">true</value>\n      <value type=\"QString\" key=\"ProjectExplorer.ProjectConfiguration.DefaultDisplayName\">Make</value>\n      <value type=\"QString\" key=\"ProjectExplorer.ProjectConfiguration.DisplayName\"></value>\n      <value type=\"QString\" key=\"ProjectExplorer.ProjectConfiguration.Id\">Qt4ProjectManager.MakeStep</value>\n      <valuelist type=\"QVariantList\" key=\"Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments\"/>\n      <value type=\"bool\" key=\"Qt4ProjectManager.MakeStep.Clean\">true</value>\n      <value type=\"QString\" key=\"Qt4ProjectManager.MakeStep.MakeArguments\">clean</value>\n      <value type=\"QString\" key=\"Qt4ProjectManager.MakeStep.MakeCommand\"></value>\n     </valuemap>\n     <value type=\"int\" key=\"ProjectExplorer.BuildStepList.StepsCount\">1</value>\n     <value type=\"QString\" key=\"ProjectExplorer.ProjectConfiguration.DefaultDisplayName\">Clean</value>\n     <value type=\"QString\" key=\"ProjectExplorer.ProjectConfiguration.DisplayName\"></value>\n     <value type=\"QString\" key=\"ProjectExplorer.ProjectConfiguration.Id\">ProjectExplorer.BuildSteps.Clean</value>\n    </valuemap>\n    <value type=\"int\" key=\"ProjectExplorer.BuildConfiguration.BuildStepListCount\">2</value>\n    <value type=\"bool\" key=\"ProjectExplorer.BuildConfiguration.ClearSystemEnvironment\">false</value>\n    <valuelist type=\"QVariantList\" key=\"ProjectExplorer.BuildConfiguration.UserEnvironmentChanges\"/>\n    <value type=\"QString\" key=\"ProjectExplorer.ProjectConfiguration.DefaultDisplayName\">Debug</value>\n    <value type=\"QString\" key=\"ProjectExplorer.ProjectConfiguration.DisplayName\"></value>\n    <value type=\"QString\" key=\"ProjectExplorer.ProjectConfiguration.Id\">Qt4ProjectManager.Qt4BuildConfiguration</value>\n    <value type=\"int\" key=\"Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration\">2</value>\n    <value type=\"bool\" key=\"Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild\">true</value>\n   </valuemap>\n   <valuemap type=\"QVariantMap\" key=\"ProjectExplorer.Target.BuildConfiguration.1\">\n    <value type=\"QString\" key=\"ProjectExplorer.BuildConfiguration.BuildDirectory\">C:/Users/culan/Desktop/build-SemiAutoLabel-Desktop_Qt_5_4_1_MSVC2013_OpenGL_64bit-Release</value>\n    <valuemap type=\"QVariantMap\" key=\"ProjectExplorer.BuildConfiguration.BuildStepList.0\">\n     <valuemap type=\"QVariantMap\" key=\"ProjectExplorer.BuildStepList.Step.0\">\n      <value type=\"bool\" key=\"ProjectExplorer.BuildStep.Enabled\">true</value>\n      <value type=\"QString\" key=\"ProjectExplorer.ProjectConfiguration.DefaultDisplayName\">qmake</value>\n      <value type=\"QString\" key=\"ProjectExplorer.ProjectConfiguration.DisplayName\"></value>\n      <value type=\"QString\" key=\"ProjectExplorer.ProjectConfiguration.Id\">QtProjectManager.QMakeBuildStep</value>\n      <value type=\"bool\" key=\"QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibrary\">false</value>\n      <value type=\"bool\" key=\"QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibraryAuto\">true</value>\n      <value type=\"QString\" key=\"QtProjectManager.QMakeBuildStep.QMakeArguments\"></value>\n      <value type=\"bool\" key=\"QtProjectManager.QMakeBuildStep.QMakeForced\">false</value>\n      <value type=\"bool\" key=\"QtProjectManager.QMakeBuildStep.UseQtQuickCompiler\">false</value>\n     </valuemap>\n     <valuemap type=\"QVariantMap\" key=\"ProjectExplorer.BuildStepList.Step.1\">\n      <value type=\"bool\" key=\"ProjectExplorer.BuildStep.Enabled\">true</value>\n      <value type=\"QString\" key=\"ProjectExplorer.ProjectConfiguration.DefaultDisplayName\">Make</value>\n      <value type=\"QString\" key=\"ProjectExplorer.ProjectConfiguration.DisplayName\"></value>\n      <value type=\"QString\" key=\"ProjectExplorer.ProjectConfiguration.Id\">Qt4ProjectManager.MakeStep</value>\n      <valuelist type=\"QVariantList\" key=\"Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments\"/>\n      <value type=\"bool\" key=\"Qt4ProjectManager.MakeStep.Clean\">false</value>\n      <value type=\"QString\" key=\"Qt4ProjectManager.MakeStep.MakeArguments\"></value>\n      <value type=\"QString\" key=\"Qt4ProjectManager.MakeStep.MakeCommand\"></value>\n     </valuemap>\n     <value type=\"int\" key=\"ProjectExplorer.BuildStepList.StepsCount\">2</value>\n     <value type=\"QString\" key=\"ProjectExplorer.ProjectConfiguration.DefaultDisplayName\">Build</value>\n     <value type=\"QString\" key=\"ProjectExplorer.ProjectConfiguration.DisplayName\"></value>\n     <value type=\"QString\" key=\"ProjectExplorer.ProjectConfiguration.Id\">ProjectExplorer.BuildSteps.Build</value>\n    </valuemap>\n    <valuemap type=\"QVariantMap\" key=\"ProjectExplorer.BuildConfiguration.BuildStepList.1\">\n     <valuemap type=\"QVariantMap\" key=\"ProjectExplorer.BuildStepList.Step.0\">\n      <value type=\"bool\" key=\"ProjectExplorer.BuildStep.Enabled\">true</value>\n      <value type=\"QString\" key=\"ProjectExplorer.ProjectConfiguration.DefaultDisplayName\">Make</value>\n      <value type=\"QString\" key=\"ProjectExplorer.ProjectConfiguration.DisplayName\"></value>\n      <value type=\"QString\" key=\"ProjectExplorer.ProjectConfiguration.Id\">Qt4ProjectManager.MakeStep</value>\n      <valuelist type=\"QVariantList\" key=\"Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments\"/>\n      <value type=\"bool\" key=\"Qt4ProjectManager.MakeStep.Clean\">true</value>\n      <value type=\"QString\" key=\"Qt4ProjectManager.MakeStep.MakeArguments\">clean</value>\n      <value type=\"QString\" key=\"Qt4ProjectManager.MakeStep.MakeCommand\"></value>\n     </valuemap>\n     <value type=\"int\" key=\"ProjectExplorer.BuildStepList.StepsCount\">1</value>\n     <value type=\"QString\" key=\"ProjectExplorer.ProjectConfiguration.DefaultDisplayName\">Clean</value>\n     <value type=\"QString\" key=\"ProjectExplorer.ProjectConfiguration.DisplayName\"></value>\n     <value type=\"QString\" key=\"ProjectExplorer.ProjectConfiguration.Id\">ProjectExplorer.BuildSteps.Clean</value>\n    </valuemap>\n    <value type=\"int\" key=\"ProjectExplorer.BuildConfiguration.BuildStepListCount\">2</value>\n    <value type=\"bool\" key=\"ProjectExplorer.BuildConfiguration.ClearSystemEnvironment\">false</value>\n    <valuelist type=\"QVariantList\" key=\"ProjectExplorer.BuildConfiguration.UserEnvironmentChanges\"/>\n    <value type=\"QString\" key=\"ProjectExplorer.ProjectConfiguration.DefaultDisplayName\">Release</value>\n    <value type=\"QString\" key=\"ProjectExplorer.ProjectConfiguration.DisplayName\"></value>\n    <value type=\"QString\" key=\"ProjectExplorer.ProjectConfiguration.Id\">Qt4ProjectManager.Qt4BuildConfiguration</value>\n    <value type=\"int\" key=\"Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration\">0</value>\n    <value type=\"bool\" key=\"Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild\">true</value>\n   </valuemap>\n   <value type=\"int\" key=\"ProjectExplorer.Target.BuildConfigurationCount\">2</value>\n   <valuemap type=\"QVariantMap\" key=\"ProjectExplorer.Target.DeployConfiguration.0\">\n    <valuemap type=\"QVariantMap\" key=\"ProjectExplorer.BuildConfiguration.BuildStepList.0\">\n     <value type=\"int\" key=\"ProjectExplorer.BuildStepList.StepsCount\">0</value>\n     <value type=\"QString\" key=\"ProjectExplorer.ProjectConfiguration.DefaultDisplayName\">Deploy</value>\n     <value type=\"QString\" key=\"ProjectExplorer.ProjectConfiguration.DisplayName\"></value>\n     <value type=\"QString\" key=\"ProjectExplorer.ProjectConfiguration.Id\">ProjectExplorer.BuildSteps.Deploy</value>\n    </valuemap>\n    <value type=\"int\" key=\"ProjectExplorer.BuildConfiguration.BuildStepListCount\">1</value>\n    <value type=\"QString\" key=\"ProjectExplorer.ProjectConfiguration.DefaultDisplayName\">Deploy locally</value>\n    <value type=\"QString\" key=\"ProjectExplorer.ProjectConfiguration.DisplayName\"></value>\n    <value type=\"QString\" key=\"ProjectExplorer.ProjectConfiguration.Id\">ProjectExplorer.DefaultDeployConfiguration</value>\n   </valuemap>\n   <value type=\"int\" key=\"ProjectExplorer.Target.DeployConfigurationCount\">1</value>\n   <valuemap type=\"QVariantMap\" key=\"ProjectExplorer.Target.PluginSettings\"/>\n   <valuemap type=\"QVariantMap\" key=\"ProjectExplorer.Target.RunConfiguration.0\">\n    <valuelist type=\"QVariantList\" key=\"Analyzer.Valgrind.AddedSuppressionFiles\"/>\n    <value type=\"bool\" key=\"Analyzer.Valgrind.Callgrind.CollectBusEvents\">false</value>\n    <value type=\"bool\" key=\"Analyzer.Valgrind.Callgrind.CollectSystime\">false</value>\n    <value type=\"bool\" key=\"Analyzer.Valgrind.Callgrind.EnableBranchSim\">false</value>\n    <value type=\"bool\" key=\"Analyzer.Valgrind.Callgrind.EnableCacheSim\">false</value>\n    <value type=\"bool\" key=\"Analyzer.Valgrind.Callgrind.EnableEventToolTips\">true</value>\n    <value type=\"double\" key=\"Analyzer.Valgrind.Callgrind.MinimumCostRatio\">0.01</value>\n    <value type=\"double\" key=\"Analyzer.Valgrind.Callgrind.VisualisationMinimumCostRatio\">10</value>\n    <value type=\"bool\" key=\"Analyzer.Valgrind.FilterExternalIssues\">true</value>\n    <value type=\"int\" key=\"Analyzer.Valgrind.LeakCheckOnFinish\">1</value>\n    <value type=\"int\" key=\"Analyzer.Valgrind.NumCallers\">25</value>\n    <valuelist type=\"QVariantList\" key=\"Analyzer.Valgrind.RemovedSuppressionFiles\"/>\n    <value type=\"int\" key=\"Analyzer.Valgrind.SelfModifyingCodeDetection\">1</value>\n    <value type=\"bool\" key=\"Analyzer.Valgrind.Settings.UseGlobalSettings\">true</value>\n    <value type=\"bool\" key=\"Analyzer.Valgrind.ShowReachable\">false</value>\n    <value type=\"bool\" key=\"Analyzer.Valgrind.TrackOrigins\">true</value>\n    <value type=\"QString\" key=\"Analyzer.Valgrind.ValgrindExecutable\">valgrind</value>\n    <valuelist type=\"QVariantList\" key=\"Analyzer.Valgrind.VisibleErrorKinds\">\n     <value type=\"int\">0</value>\n     <value type=\"int\">1</value>\n     <value type=\"int\">2</value>\n     <value type=\"int\">3</value>\n     <value type=\"int\">4</value>\n     <value type=\"int\">5</value>\n     <value type=\"int\">6</value>\n     <value type=\"int\">7</value>\n     <value type=\"int\">8</value>\n     <value type=\"int\">9</value>\n     <value type=\"int\">10</value>\n     <value type=\"int\">11</value>\n     <value type=\"int\">12</value>\n     <value type=\"int\">13</value>\n     <value type=\"int\">14</value>\n    </valuelist>\n    <value type=\"int\" key=\"PE.EnvironmentAspect.Base\">2</value>\n    <valuelist type=\"QVariantList\" key=\"PE.EnvironmentAspect.Changes\"/>\n    <value type=\"QString\" key=\"ProjectExplorer.ProjectConfiguration.DefaultDisplayName\">Label</value>\n    <value type=\"QString\" key=\"ProjectExplorer.ProjectConfiguration.DisplayName\">Label2</value>\n    <value type=\"QString\" key=\"ProjectExplorer.ProjectConfiguration.Id\">Qt4ProjectManager.Qt4RunConfiguration:C:/Users/culan/Desktop/SemiAutoLabel/Label.pro</value>\n    <value type=\"QString\" key=\"Qt4ProjectManager.Qt4RunConfiguration.CommandLineArguments\"></value>\n    <value type=\"QString\" key=\"Qt4ProjectManager.Qt4RunConfiguration.ProFile\">Label.pro</value>\n    <value type=\"bool\" key=\"Qt4ProjectManager.Qt4RunConfiguration.UseDyldImageSuffix\">false</value>\n    <value type=\"bool\" key=\"Qt4ProjectManager.Qt4RunConfiguration.UseTerminal\">false</value>\n    <value type=\"QString\" key=\"Qt4ProjectManager.Qt4RunConfiguration.UserWorkingDirectory\"></value>\n    <value type=\"uint\" key=\"RunConfiguration.QmlDebugServerPort\">3768</value>\n    <value type=\"bool\" key=\"RunConfiguration.UseCppDebugger\">false</value>\n    <value type=\"bool\" key=\"RunConfiguration.UseCppDebuggerAuto\">true</value>\n    <value type=\"bool\" key=\"RunConfiguration.UseMultiProcess\">false</value>\n    <value type=\"bool\" key=\"RunConfiguration.UseQmlDebugger\">false</value>\n    <value type=\"bool\" key=\"RunConfiguration.UseQmlDebuggerAuto\">true</value>\n   </valuemap>\n   <value type=\"int\" key=\"ProjectExplorer.Target.RunConfigurationCount\">1</value>\n  </valuemap>\n </data>\n <data>\n  <variable>ProjectExplorer.Project.TargetCount</variable>\n  <value type=\"int\">1</value>\n </data>\n <data>\n  <variable>ProjectExplorer.Project.Updater.FileVersion</variable>\n  <value type=\"int\">18</value>\n </data>\n <data>\n  <variable>Version</variable>\n  <value type=\"int\">18</value>\n </data>\n</qtcreator>\n"
  },
  {
    "path": "src/main.cpp",
    "content": "#include \"mainwindow.h\"\n#include <QApplication>\n\nint main(int argc, char *argv[])\n{\n    QApplication a(argc, argv);\n    MainWindow w;\n    w.show();\n    return a.exec();\n}\n"
  },
  {
    "path": "src/mainwindow.cpp",
    "content": "#include \"mainwindow.h\"\n#include \"ui_mainwindow.h\"\n\nMainWindow::MainWindow(QWidget *parent) :\n    QMainWindow(parent),\n    ui(new Ui::MainWindow)\n{\n    ui->setupUi(this);\n\n    ui->label->setScaledContents(true);\n\n    ui->openPushButton->setEnabled(false);\n    ui->autoPushButton->setEnabled(false);\n    ui->savePushButton->setEnabled(false);\n    ui->redoPushButton->setEnabled(false);\n    ui->undoPushButton->setEnabled(false);\n    ui->contourModelPushButton->setEnabled(false);\n\n\n    ui->savePushButton->setShortcut(tr(\"ctrl+s\"));\n    ui->redoPushButton->setShortcut(tr(\"ctrl+r\"));\n    ui->undoPushButton->setShortcut(tr(\"ctrl+u\"));\n\n    validRegion.x=ui->label->frameGeometry().x();\n    validRegion.y=ui->label->frameGeometry().y()+10;\n    validRegion.height=ui->label->frameGeometry().height();\n    validRegion.width=ui->label->frameGeometry().width();\n\n\n    prSetDlg=new SetParameterDialog();\n\n    file.setFileName(\"set.ini\");\n    if(!file.open(QIODevice::ReadWrite))\n    {\n        QMessageBox::information(NULL, \"File Read Error\", file.errorString(),QMessageBox::Ok , QMessageBox::Ok);\n    }\n\n    while(!file.atEnd())\n    {\n        QByteArray line=file.readLine();\n        QString strTmp(line);\n        strTmp.trimmed();\n        if(strTmp.startsWith(\"SequencePath=\"))\n        {\n            prSetDlg->setSeqPath(strTmp.mid(13).trimmed());\n        }\n\n        if(strTmp.startsWith(\"FileFormat=\"))\n        {\n           prSetDlg->setFileFormat(strTmp.mid(11).trimmed());\n        }\n\n        if(strTmp.startsWith(\"OutputPath=\"))\n        {\n            prSetDlg->setOutputPath(strTmp.mid(11).trimmed());\n        }\n\n        if(strTmp.startsWith(\"StartFrame=\"))\n        {\n            prSetDlg->setStartFrame(strTmp.mid(11).trimmed());\n        }\n    }\n\n    hisfile.setFileName(\"history.ini\");\n    if(!hisfile.open(QIODevice::WriteOnly|QIODevice::Append))\n    {\n        QMessageBox::information(NULL, \"File Read Error\", file.errorString(),QMessageBox::Ok , QMessageBox::Ok);\n    }\n\n    inputPath=\"\";\n    outputPath=\"\";\n    imgInputPath=\"\";\n    imgOutputPath=\"\";\n\n    frameIdx=0;\n\n    drawMouseMove=false;\n\n    useHull=true; //Hull Model When Start\n\n    autoModel=true; //Auto Model When Start\n\n    rectState=NOT_SET;\n    lblsState=NOT_SET;\n    prLblsState=NOT_SET;\n    isInitialized=false;\n    isf=true;\n\n}\n\nMainWindow::~MainWindow()\n{\n\n    QTextStream out(&file);\n    QString strTmp;\n    strTmp=QString(\"%1%2\").arg(\"StartFrame=\").arg(prSetDlg->getStartFrame());\n    out<<strTmp<<endl;\n    file.close();\n\n    QTextStream hisout(&hisfile);\n    qint64 elapsedSec=startTime.msecsTo(curTime)/1000;\n    strTmp=QString(\"%1  %2  %3:%4:%5\").arg(frameIdx).arg(frameIdx-startIdx).arg(elapsedSec/3600).arg((elapsedSec%3600)/60).arg(elapsedSec%60);\n    hisout<<strTmp<<endl;\n    hisfile.close();\n\n    delete ui;\n}\n\n\nvoid MainWindow::displayMat(Mat mat)\n{\n    Mat rgb;\n    QImage img;\n    if(mat.channels()==3)\n    {\n        cvtColor(mat,rgb,CV_BGR2RGB);\n        img = QImage((const uchar*)(rgb.data),rgb.cols,rgb.rows,rgb.cols*rgb.channels(),QImage::Format_RGB888);\n    }\n    else\n    {\n        img = QImage((const uchar*)(mat.data),mat.cols,mat.rows,mat.cols*mat.channels(),QImage::Format_Indexed8);\n    }\n    ui->label->setPixmap(QPixmap::fromImage(img));\n    ui->label->resize(ui->label->pixmap()->size());\n    ui->label->show();\n}\n\n\n\nvoid MainWindow::on_setPushButton_clicked()\n{\n    ui->openPushButton->setEnabled(false);\n    ui->autoPushButton->setEnabled(false);\n    ui->savePushButton->setEnabled(false);\n    ui->redoPushButton->setEnabled(false);\n    ui->undoPushButton->setEnabled(false);\n    ui->contourModelPushButton->setEnabled(false);\n\n\n    if(prSetDlg->exec()==QDialog::Accepted)\n    {\n       QString seqPath=prSetDlg->getSeqPath();\n       QString fileFormat=prSetDlg->getFileFormat();\n       QString oPath=prSetDlg->getOutputPath();\n       QString startFrame=prSetDlg->getStartFrame();\n\n\n       file.resize(0);\n       QTextStream out(&file);\n       QString strTmp;\n       strTmp=QString(\"%1%2\").arg(\"SequencePath=\").arg(seqPath);\n       out<<strTmp<<endl;\n       strTmp=QString(\"%1%2\").arg(\"FileFormat=\").arg(fileFormat);\n       out<<strTmp<<endl;\n       strTmp=QString(\"%1%2\").arg(\"OutputPath=\").arg(oPath);\n       out<<strTmp<<endl;\n\n\n       if(seqPath==\"\"||fileFormat==\"\"||oPath==\"\"||startFrame==\"\")\n       {\n           QMessageBox::information(NULL, \"Information\", \"Please Set The Parematers\",QMessageBox::Ok , QMessageBox::Ok);\n       }\n       else\n       {\n           if(seqPath.endsWith(\"\\\\\"))\n           {\n               inputPath=seqPath+fileFormat;\n           }\n           else\n           {\n               inputPath=seqPath+\"\\\\\"+fileFormat;\n           }\n\n           if(outputPath.endsWith(\"\\\\\"))\n           {\n               outputPath=oPath+fileFormat;\n           }\n           else\n           {\n               //outputPath=oPath+\"\\\\\"+fileFormat;\n               outputPath=oPath+\"\\\\frame%.5d.bmp\";\n           }\n\n           frameIdx=startFrame.toInt();\n\n           ui->openPushButton->setEnabled(true);\n       }\n    }\n    else\n    {\n       QMessageBox::information(NULL, \"Information\", \"Please Set The Parematers\",QMessageBox::Ok , QMessageBox::Ok);\n    }\n\n}\n\nvoid MainWindow::on_openPushButton_clicked()\n{\n    readImage();\n    ui->openPushButton->setEnabled(false);\n    ui->autoPushButton->setEnabled(true);\n    ui->savePushButton->setEnabled(true);\n    ui->redoPushButton->setEnabled(true);\n    ui->undoPushButton->setEnabled(true);\n    ui->contourModelPushButton->setEnabled(true);\n\n    startIdx=prSetDlg->getStartFrame().toInt();\n    startTime=QDateTime::currentDateTime();\n    timerId=startTimer(1000);\n}\n\nvoid MainWindow::on_autoPushButton_clicked()\n{\n    if(autoModel)\n    {\n        autoModel=false;\n        ui->autoPushButton->setText(\"Auto\");\n    }\n    else\n    {\n        resetAMParameters();\n        autoModel=true;\n        ui->autoPushButton->setText(\"Manual\");\n    }\n}\n\nvoid MainWindow::on_savePushButton_clicked()\n{\n    cv::resize(img_cur,img_cur,Size(640,480));\n\n    imgOutputPath.sprintf(outputPath.toStdString().c_str(),frameIdx);\n    if(!imwrite(imgOutputPath.toStdString(),img_cur))\n    {\n        QMessageBox::information(NULL,\"Save Error\",\"Please Check Your Save Path!\",QMessageBox::Ok);\n    }\n    else\n    {\n        frameIdx++;\n        readImage();\n        if(!readImage())\n        {\n            frameIdx--;\n        }\n    }\n}\n\nvoid MainWindow::on_redoPushButton_clicked()\n{\n    readImage();\n}\n\nvoid MainWindow::on_undoPushButton_clicked()\n{\n    img_pre.copyTo(img_cur);\n    img_pre.copyTo(img_cur_copy);\n    displayMat(img_cur);\n    contour.clear();\n    resetAMParameters();\n}\n\nvoid MainWindow::on_contourModelPushButton_clicked()\n{\n    if(useHull)\n    {\n        useHull=false;\n        ui->contourModelPushButton->setText(\"Hull\");\n    }\n    else\n    {\n        useHull=true;\n        ui->contourModelPushButton->setText(\"Poly\");\n    }\n}\n\nvoid MainWindow::mousePressEvent(QMouseEvent *event)\n{\n    if(event->button()==Qt::LeftButton)              //{Left Button Be Pressed}\n    {\n        Point pointTmp(event->x(),event->y());\n        restrictPoint(pointTmp);\n\n        if(autoModel)                      //[Auto Model]\n        {\n            if(rectState==NOT_SET)                                                          // RectMask\n            {\n                rect.x=pointTmp.x;\n                rect.y=pointTmp.y;\n                rectState=IN_PROCESS;\n            }\n            else if(rectState==SET&&QApplication::keyboardModifiers()==Qt::ShiftModifier)   // Shift+LeftClick: GC_FG\n            {\n                isf=true;\n                lblsState=IN_PROCESS;\n            }\n            else if(rectState==SET&&QApplication::keyboardModifiers()==Qt::ControlModifier) // Ctrl+LeftClick: GC_BG\n            {\n                isf=false;\n                lblsState=IN_PROCESS;\n            }\n            else if(rectState==SET&&QApplication::keyboardModifiers()==Qt::AltModifier)     // Alt+LeftClick: GC_PR_FG\n            {\n                isf=true;\n                prLblsState=IN_PROCESS;\n            }\n            else if(rectState==SET)                                                         // LeftClick: GC_PR_BG\n            {\n                isf=false;\n                prLblsState=IN_PROCESS;\n            }\n\n        }\n        else                               //[Manual Model]\n        {\n            contour.push_back(pointTmp);\n            drawConnects();\n        }\n\n        drawMouseMove=true;\n    }\n    else if(event->button()==Qt::RightButton)        //{Right Button Be Pressed}\n    {\n        if(autoModel)                      //[Auto Model]\n        {\n            //Ctrl+RightClick One: Draw The Contour; Double: Fill The Contour\n            if(rectState!=IN_PROCESS&&lblsState!=IN_PROCESS&&prLblsState!=IN_PROCESS)\n            {\n                if(QApplication::keyboardModifiers()==Qt::ControlModifier)\n                {\n                    static int rightClickCount=0;\n                    if(rightClickCount==0)\n                    {\n                        Mat binMask;\n                        getBinMask(mask, binMask);\n                        vector<vector<Point>> contours;\n                        findContours(binMask, contours, CV_RETR_EXTERNAL, CV_CHAIN_APPROX_NONE);\n\n                        if(contours.size()==1)\n                        {\n                            contour=contours[0];\n                        }\n                        else\n                        {\n                            QMessageBox::information(NULL,\"Information\",\"Please Label One Foreground Object !\",QMessageBox::Ok);\n                        }\n\n                        drawConnects();\n\n                        resetAMParameters();\n                        rightClickCount=1;\n                    }\n                    else if(rightClickCount==1)\n                    {\n                        contourFill();\n                        rightClickCount=0;\n                    }\n                }\n                else    //RightClick: Cut The Foreground Iteratively\n                {\n                    if (isInitialized)\n                        grabCut(img_cur, mask, rect, bgdModel, fgdModel, 1);\n                    else\n                    {\n                        if (lblsState == SET || prLblsState == SET)\n                            grabCut(img_cur, mask, rect, bgdModel, fgdModel, 1, GC_INIT_WITH_MASK);\n                        else\n                            grabCut(img_cur, mask, rect, bgdModel, fgdModel, 1, GC_INIT_WITH_RECT);\n\n                        isInitialized = true;\n                    }\n                    bgdPxls.clear(); fgdPxls.clear();\n                    prBgdPxls.clear(); prFgdPxls.clear();\n\n\n                    Mat binMask;\n                    Mat res;\n\n                    if (!isInitialized)\n                        img_cur.copyTo(img_cur_copy);\n                    else\n                    {\n                        img_cur_copy.setTo(Scalar::all(0));\n                        getBinMask(mask, binMask);\n                        img_cur.copyTo(img_cur_copy, binMask);\n                    }\n                    displayMat(img_cur_copy);\n                }\n            }\n            else\n            {\n                resetAMParameters();\n            }\n        }\n        else                               //[Manual Model]\n        {\n            contourFill();\n        }\n    }\n    else if(event->button()==Qt::MiddleButton)       //{Middle button be pressed}\n    {\n        if(!contour.empty())\n        {\n            contour.pop_back();\n            drawConnects();\n        }\n        else\n        {\n            QMessageBox::information(NULL,\"Information\",\"Points Pool Is Empty !\",QMessageBox::Ok);\n        }\n    }\n}\n\nvoid MainWindow::mouseReleaseEvent(QMouseEvent *event)\n{\n    if(event->button()==Qt::LeftButton)\n    {\n        Point pointTmp(event->x(),event->y());\n        restrictPoint(pointTmp);\n\n        if(autoModel)                      //[Auto Model]\n        {\n            if(rectState==IN_PROCESS)\n            {\n                rect.width=abs(pointTmp.x-rect.x);\n                rect.height=abs(pointTmp.y-rect.y);\n                rect.x=rect.x>pointTmp.x?pointTmp.x:rect.x;\n                rect.y=rect.y>pointTmp.y?pointTmp.y:rect.y;\n\n                if(rect.area()>10) //The Area Of The Rect Should Not Be Too Small\n                {\n                    mask.setTo(GC_BGD);\n                    (mask(rect)).setTo(Scalar(GC_PR_FGD));\n                    rectState=SET;\n                }\n                else\n                {\n                    resetAMParameters();\n                }\n\n\n            }\n\n            vector<Point>::const_iterator it;\n            if(lblsState==IN_PROCESS&&isf)\n            {\n                for(it=fgdPxls.begin();it!=fgdPxls.end();++it)\n                    circle(mask,*it,2,GC_FGD,-1);\n                lblsState=SET;\n            }\n\n            if(lblsState==IN_PROCESS&&!isf)\n            {\n                for(it=bgdPxls.begin();it!=bgdPxls.end();++it)\n                    circle(mask,*it,2,GC_BGD,-1);\n                lblsState=SET;\n            }\n\n            if(prLblsState==IN_PROCESS&&isf)\n            {\n                for(it=prFgdPxls.begin();it!=prFgdPxls.end();++it)\n                    circle(mask,*it,2,GC_PR_FGD,-1);\n                prLblsState=SET;\n            }\n\n            if(prLblsState==IN_PROCESS&&!isf)\n            {\n                for(it=prBgdPxls.begin();it!=prBgdPxls.end();++it)\n                    circle(mask,*it,2,GC_PR_BGD,-1);\n                prLblsState=SET;\n            }\n\n        }\n        else                               //[Manual Model]\n        {\n\n        }\n\n        drawMouseMove=false;\n    }\n}\n\nvoid MainWindow::mouseMoveEvent(QMouseEvent *event)\n{\n    if(drawMouseMove)\n    {\n        Point pointTmp(event->x(),event->y());\n        restrictPoint(pointTmp);\n\n        if(autoModel)                     //[Auto Model]\n        {\n            if(rectState==IN_PROCESS)\n            {\n                img_cur.copyTo(img_cur_copy);\n                rectangle(img_cur_copy,Point(rect.x,rect.y),Point(pointTmp.x,pointTmp.y),Scalar(0,255,0),2);\n                displayMat(img_cur_copy);\n            }\n\n            if(lblsState==IN_PROCESS&&isf)\n            {\n                fgdPxls.push_back(pointTmp);\n                circle(img_cur_copy,pointTmp,2,Scalar(0,0,255),-1);\n                displayMat(img_cur_copy);\n            }\n\n            if(lblsState==IN_PROCESS&&!isf)\n            {\n                bgdPxls.push_back(pointTmp);\n                circle(img_cur_copy,pointTmp,2,Scalar(255,0,0),-1);\n                displayMat(img_cur_copy);\n            }\n\n            if(prLblsState==IN_PROCESS&&isf)\n            {\n                prFgdPxls.push_back(pointTmp);\n                circle(img_cur_copy,pointTmp,2,Scalar(230,130,255),-1);\n                displayMat(img_cur_copy);\n            }\n\n            if(prLblsState==IN_PROCESS&&!isf)\n            {\n                prBgdPxls.push_back(pointTmp);\n                circle(img_cur_copy,pointTmp,2,Scalar(255,255,160),-1);\n                displayMat(img_cur_copy);\n            }\n        }\n        else                              //[Manual Model]\n        {\n            contour.push_back(pointTmp);\n            drawConnects();\n        }\n    }\n}\n\n\nbool MainWindow::readImage()\n{\n    contour.clear();\n\n    imgInputPath.sprintf(inputPath.toStdString().c_str(),frameIdx);\n    img_cur=imread(imgInputPath.toStdString());\n    if(!img_cur.empty())\n    {\n        img_cur.copyTo(img_pre);\n        displayMat(img_cur);\n\n        prSetDlg->setStartFrame(QString(\"%1\").arg(frameIdx));\n\n        mask.create(img_cur.size(),CV_8UC1);\n\n        return true;\n    }\n    else\n    {\n        QMessageBox::information(NULL,\"Read Failure\",\"Failed To Read \"+imgInputPath,QMessageBox::Ok,QMessageBox::Ok);\n        return false;\n    }\n\n}\n\n\nvoid MainWindow::drawConnects()\n{\n    img_pre.copyTo(img_cur);\n    for(int i=0;i<contour.size();i++)\n    {\n        circle(img_cur,contour.at(i),0,Scalar(0,0,255));\n    }\n\n    for(int i=1;i<contour.size();i++) // i=0;i<int(contour.size())-1;i++ ; Note Int ype\n    {\n        line(img_cur,contour.at(i-1),contour.at(i),Scalar(0,0,255));\n    }\n\n    displayMat(img_cur);\n}\n\n\nvoid MainWindow::contourFill()\n{\n    if(!contour.empty())\n    {\n        vector<vector<Point>> contours;\n        if(!useHull)\n        {\n            approxPolyDP(contour,contour,0,true);\n        }\n        else\n        {\n            convexHull(Mat(contour),contour);\n        }\n        contours.push_back(contour);\n\n        img_pre.copyTo(img_cur);\n        drawContours(img_cur, contours, -1, Scalar(0,0,255), CV_FILLED);\n        displayMat(img_cur);\n        img_cur.copyTo(img_pre);\n        img_cur.copyTo(img_cur_copy);\n\n        contour.clear();\n    }\n}\n\nvoid MainWindow::getBinMask(const Mat& comMask, Mat& binMask)\n{\n    if (comMask.empty() || comMask.type() != CV_8UC1)\n        CV_Error(CV_StsBadArg, \"ComMask Is Empty Or Has Incorrect Type (Not CV_8UC1)\");\n    if (binMask.empty() || binMask.rows != comMask.rows || binMask.cols != comMask.cols)\n        binMask.create(comMask.size(), CV_8UC1);\n    binMask = comMask & 1;\n}\n\nvoid MainWindow::resetAMParameters()\n{\n    if (!mask.empty())\n        mask.setTo(Scalar::all(GC_BGD));\n    bgdPxls.clear(); fgdPxls.clear();\n    prBgdPxls.clear();  prFgdPxls.clear();\n\n    isInitialized = false;\n    rectState = NOT_SET;\n    lblsState = NOT_SET;\n    prLblsState = NOT_SET;\n}\n\nvoid MainWindow::restrictPoint(Point & _point)\n{\n    _point.x-=validRegion.x;\n    _point.y-=validRegion.y;\n\n    _point.x=_point.x>0?_point.x:0;\n    _point.y=_point.y>0?_point.y:0;\n\n    _point.x=_point.x<validRegion.width?_point.x:validRegion.width;\n    _point.y=_point.y<validRegion.height?_point.y:validRegion.height;\n}\n\nvoid MainWindow::paintEvent(QPaintEvent* event)\n{\n    float xscale=ui->label->frameGeometry().width()/float(validRegion.width);\n    float yscale=ui->label->frameGeometry().height()/float(validRegion.height);\n\n    if(!contour.empty())\n    {\n        for(int i=0;i<contour.size();i++)\n        {\n            contour.at(i).x*=xscale;\n            contour.at(i).y*=yscale;\n        }\n    }\n\n    if(rectState==SET)\n    {\n        rect.x*=xscale;\n        rect.y*=yscale;\n        rect.width*=xscale;\n        rect.height*=yscale;\n    }\n\n    vector<Point>::iterator it;\n    for(it=fgdPxls.begin();it!=fgdPxls.end();++it)\n    {\n        (*it).x*=xscale;\n        (*it).y*=yscale;\n    }\n    for(it=bgdPxls.begin();it!=bgdPxls.end();++it)\n    {\n        (*it).x*=xscale;\n        (*it).y*=yscale;\n    }\n    for(it=prFgdPxls.begin();it!=prFgdPxls.end();++it)\n    {\n        (*it).x*=xscale;\n        (*it).y*=yscale;\n    }\n    for(it=prBgdPxls.begin();it!=prBgdPxls.end();++it)\n    {\n        (*it).x*=xscale;\n        (*it).y*=yscale;\n    }\n\n    validRegion.x=ui->label->frameGeometry().x();\n    validRegion.y=ui->label->frameGeometry().y()+10;\n    validRegion.height=ui->label->frameGeometry().height();\n    validRegion.width=ui->label->frameGeometry().width();\n\n    if(!img_cur.empty()&&!img_pre.empty())\n    {\n        cv::Size sz=cv::Size(validRegion.width,validRegion.height);\n        cv::resize(img_pre,img_pre,sz);\n        cv::resize(img_cur,img_cur,sz);\n    }\n\n    if(!mask.empty()&&!img_cur_copy.empty())\n    {\n        cv::Size sz=cv::Size(validRegion.width,validRegion.height);\n        cv::resize(mask,mask,sz);\n        cv::resize(img_cur_copy,img_cur_copy,sz);\n    }\n\n}\n\nvoid MainWindow::timerEvent(QTimerEvent *event)\n{\n    curTime=QDateTime::currentDateTime();\n    qint64 elapsedSec=startTime.msecsTo(curTime)/1000;\n    ui->frameshowLabel->setText(QString(\"%1  %2  %3:%4:%5\").arg(frameIdx).arg(frameIdx-startIdx).arg(elapsedSec/3600).arg((elapsedSec%3600)/60).arg(elapsedSec%60));\n}\n\n"
  },
  {
    "path": "src/mainwindow.h",
    "content": "#ifndef MAINWINDOW_H\n#define MAINWINDOW_H\n\n#define _CRT_SECURE_NO_WARNINGS\n\n#include <QMainWindow>\n#include <QMessageBox>\n#include <QMouseEvent>\n#include <QTextStream>\n#include <QPaintEvent>\n#include <QTime>\n\n#include <vector>\n#include <cv.h>\n#include <highgui.h>\n#include \"setparameterdialog.h\"\n\nusing std::vector;\nusing namespace cv;\n\n\nnamespace Ui {\nclass MainWindow;\n}\n\nclass MainWindow : public QMainWindow\n{\n    Q_OBJECT\n\npublic:\n    explicit MainWindow(QWidget *parent = 0);\n    ~MainWindow();\n\nprivate slots:\n    void on_setPushButton_clicked();\n    void on_openPushButton_clicked();\n    void on_autoPushButton_clicked();\n    void on_savePushButton_clicked();\n    void on_redoPushButton_clicked();\n    void on_undoPushButton_clicked();\n    void on_contourModelPushButton_clicked();\n\nprivate:\n    Ui::MainWindow *ui;\n\n    SetParameterDialog * prSetDlg;\n\n    QString inputPath;\n    QString outputPath;\n    QString imgInputPath;\n    QString imgOutputPath;\n\n    unsigned int startIdx,frameIdx;\n\n    Mat img_cur,img_pre;\n\n    vector<Point> contour;\n    Rect validRegion;\n\n    QFile file,hisfile;\n\n    QDateTime startTime,curTime;\n    int timerId;\n\n    bool drawMouseMove;\n    bool useHull;\n\n    bool autoModel;\n    enum{NOT_SET=0,IN_PROCESS=1,SET=2};\n    Mat mask;\n    Mat img_cur_copy;\n    Mat bgdModel,fgdModel;\n    Rect rect;\n    uchar rectState,lblsState,prLblsState;\n    vector<Point> fgdPxls,bgdPxls,prFgdPxls,prBgdPxls;\n    bool isInitialized;\n    bool isf;\n\nprivate:\n    void displayMat(Mat mat);\n    bool readImage();\n    void drawConnects();\n    void contourFill();\n    void getBinMask(const Mat& comMask, Mat& binMask);\n    void resetAMParameters();\n    void restrictPoint(Point& _point);\n\nprotected:\n    void mousePressEvent(QMouseEvent *event);\n    void mouseReleaseEvent(QMouseEvent *event);\n    void mouseMoveEvent(QMouseEvent *event);\n    void paintEvent(QPaintEvent *event);\n    void timerEvent(QTimerEvent *event);\n};\n\n#endif // MAINWINDOW_H\n"
  },
  {
    "path": "src/mainwindow.ui",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<ui version=\"4.0\">\n <class>MainWindow</class>\n <widget class=\"QMainWindow\" name=\"MainWindow\">\n  <property name=\"geometry\">\n   <rect>\n    <x>0</x>\n    <y>0</y>\n    <width>660</width>\n    <height>573</height>\n   </rect>\n  </property>\n  <property name=\"windowTitle\">\n   <string>MainWindow</string>\n  </property>\n  <widget class=\"QWidget\" name=\"centralWidget\">\n   <layout class=\"QGridLayout\" name=\"gridLayout_2\">\n    <item row=\"0\" column=\"0\">\n     <layout class=\"QGridLayout\" name=\"gridLayout\">\n      <item row=\"0\" column=\"0\" colspan=\"8\">\n       <widget class=\"QLabel\" name=\"label\">\n        <property name=\"text\">\n         <string/>\n        </property>\n       </widget>\n      </item>\n      <item row=\"1\" column=\"1\">\n       <widget class=\"QPushButton\" name=\"openPushButton\">\n        <property name=\"text\">\n         <string>Open</string>\n        </property>\n       </widget>\n      </item>\n      <item row=\"1\" column=\"3\">\n       <widget class=\"QPushButton\" name=\"savePushButton\">\n        <property name=\"text\">\n         <string>Save</string>\n        </property>\n       </widget>\n      </item>\n      <item row=\"1\" column=\"0\">\n       <widget class=\"QPushButton\" name=\"setPushButton\">\n        <property name=\"text\">\n         <string>Set</string>\n        </property>\n       </widget>\n      </item>\n      <item row=\"1\" column=\"4\">\n       <widget class=\"QPushButton\" name=\"redoPushButton\">\n        <property name=\"text\">\n         <string>Redo</string>\n        </property>\n       </widget>\n      </item>\n      <item row=\"1\" column=\"7\">\n       <widget class=\"QLabel\" name=\"frameshowLabel\">\n        <property name=\"text\">\n         <string/>\n        </property>\n       </widget>\n      </item>\n      <item row=\"1\" column=\"6\">\n       <widget class=\"QPushButton\" name=\"contourModelPushButton\">\n        <property name=\"text\">\n         <string>Poly</string>\n        </property>\n       </widget>\n      </item>\n      <item row=\"1\" column=\"5\">\n       <widget class=\"QPushButton\" name=\"undoPushButton\">\n        <property name=\"text\">\n         <string>Undo</string>\n        </property>\n       </widget>\n      </item>\n      <item row=\"1\" column=\"2\">\n       <widget class=\"QPushButton\" name=\"autoPushButton\">\n        <property name=\"text\">\n         <string>Manual</string>\n        </property>\n       </widget>\n      </item>\n     </layout>\n    </item>\n   </layout>\n  </widget>\n  <widget class=\"QMenuBar\" name=\"menuBar\">\n   <property name=\"geometry\">\n    <rect>\n     <x>0</x>\n     <y>0</y>\n     <width>660</width>\n     <height>21</height>\n    </rect>\n   </property>\n  </widget>\n  <widget class=\"QToolBar\" name=\"mainToolBar\">\n   <attribute name=\"toolBarArea\">\n    <enum>TopToolBarArea</enum>\n   </attribute>\n   <attribute name=\"toolBarBreak\">\n    <bool>false</bool>\n   </attribute>\n  </widget>\n </widget>\n <layoutdefault spacing=\"6\" margin=\"11\"/>\n <resources/>\n <connections/>\n</ui>\n"
  },
  {
    "path": "src/setparameterdialog.cpp",
    "content": "#include \"setparameterdialog.h\"\n#include \"ui_setparameterdialog.h\"\n\n#include <string>\n\nSetParameterDialog::SetParameterDialog(QWidget *parent) :\n    QDialog(parent),\n    ui(new Ui::SetParameterDialog)\n{\n    ui->setupUi(this);\n}\n\nSetParameterDialog::~SetParameterDialog()\n{\n    delete ui;\n}\n\nQString SetParameterDialog::getSeqPath()\n{\n    return ui->lineEdit_SequencePath->text();\n}\n\nQString SetParameterDialog::getFileFormat()\n{\n    return ui->lineEdit_FileFormat->text();\n}\n\nQString SetParameterDialog::getOutputPath()\n{\n    return ui->lineEdit_OutputPath->text();\n}\n\nQString SetParameterDialog::getStartFrame()\n{\n    return ui->lineEdit_StartFrame->text();\n}\n\nvoid SetParameterDialog::setSeqPath(const QString& str)\n{\n    ui->lineEdit_SequencePath->setText(str);\n}\n\nvoid SetParameterDialog::setFileFormat(const QString& str)\n{\n    ui->lineEdit_FileFormat->setText(str);\n}\n\nvoid SetParameterDialog::setOutputPath(const QString& str)\n{\n    ui->lineEdit_OutputPath->setText(str);\n}\n\nvoid SetParameterDialog::setStartFrame(const QString& str)\n{\n    ui->lineEdit_StartFrame->setText(str);\n}\n"
  },
  {
    "path": "src/setparameterdialog.h",
    "content": "#ifndef SETPARAMETERDIALOG_H\n#define SETPARAMETERDIALOG_H\n\n#include <QDialog>\n\nnamespace Ui {\nclass SetParameterDialog;\n}\n\nclass SetParameterDialog : public QDialog\n{\n    Q_OBJECT\n\npublic:\n    explicit SetParameterDialog(QWidget *parent = 0);\n    ~SetParameterDialog();\n\n    QString getSeqPath();\n    QString getFileFormat();\n    QString getOutputPath();\n    QString getStartFrame();\n\n    void setSeqPath(const QString& str);\n    void setFileFormat(const QString& str);\n    void setOutputPath(const QString& str);\n    void setStartFrame(const QString& str);\nprivate:\n    Ui::SetParameterDialog *ui;\n};\n\n#endif // SETPARAMETERDIALOG_H\n"
  },
  {
    "path": "src/setparameterdialog.ui",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<ui version=\"4.0\">\n <class>SetParameterDialog</class>\n <widget class=\"QDialog\" name=\"SetParameterDialog\">\n  <property name=\"geometry\">\n   <rect>\n    <x>0</x>\n    <y>0</y>\n    <width>400</width>\n    <height>300</height>\n   </rect>\n  </property>\n  <property name=\"windowTitle\">\n   <string>Dialog</string>\n  </property>\n  <widget class=\"QDialogButtonBox\" name=\"buttonBox\">\n   <property name=\"geometry\">\n    <rect>\n     <x>30</x>\n     <y>240</y>\n     <width>341</width>\n     <height>32</height>\n    </rect>\n   </property>\n   <property name=\"orientation\">\n    <enum>Qt::Horizontal</enum>\n   </property>\n   <property name=\"standardButtons\">\n    <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>\n   </property>\n  </widget>\n  <widget class=\"QLabel\" name=\"label\">\n   <property name=\"geometry\">\n    <rect>\n     <x>10</x>\n     <y>40</y>\n     <width>91</width>\n     <height>21</height>\n    </rect>\n   </property>\n   <property name=\"text\">\n    <string>Sequences Path :</string>\n   </property>\n  </widget>\n  <widget class=\"QLineEdit\" name=\"lineEdit_SequencePath\">\n   <property name=\"geometry\">\n    <rect>\n     <x>110</x>\n     <y>41</y>\n     <width>271</width>\n     <height>20</height>\n    </rect>\n   </property>\n   <property name=\"text\">\n    <string>C:\\Users\\culan\\Desktop\\VIVIDJPG\\egtest04</string>\n   </property>\n  </widget>\n  <widget class=\"QLabel\" name=\"label2\">\n   <property name=\"geometry\">\n    <rect>\n     <x>10</x>\n     <y>90</y>\n     <width>71</width>\n     <height>16</height>\n    </rect>\n   </property>\n   <property name=\"text\">\n    <string>File Format :</string>\n   </property>\n  </widget>\n  <widget class=\"QLineEdit\" name=\"lineEdit_FileFormat\">\n   <property name=\"geometry\">\n    <rect>\n     <x>110</x>\n     <y>90</y>\n     <width>113</width>\n     <height>20</height>\n    </rect>\n   </property>\n   <property name=\"text\">\n    <string>frame%.5d.jpg</string>\n   </property>\n  </widget>\n  <widget class=\"QLabel\" name=\"label_2\">\n   <property name=\"geometry\">\n    <rect>\n     <x>10</x>\n     <y>140</y>\n     <width>81</width>\n     <height>16</height>\n    </rect>\n   </property>\n   <property name=\"text\">\n    <string>Output Path :</string>\n   </property>\n  </widget>\n  <widget class=\"QLineEdit\" name=\"lineEdit_OutputPath\">\n   <property name=\"geometry\">\n    <rect>\n     <x>110</x>\n     <y>140</y>\n     <width>271</width>\n     <height>20</height>\n    </rect>\n   </property>\n   <property name=\"text\">\n    <string>C:\\Users\\culan\\Desktop\\Labeled\\egtest04</string>\n   </property>\n  </widget>\n  <widget class=\"QLabel\" name=\"label_3\">\n   <property name=\"geometry\">\n    <rect>\n     <x>10</x>\n     <y>190</y>\n     <width>91</width>\n     <height>16</height>\n    </rect>\n   </property>\n   <property name=\"text\">\n    <string>Start Frame : </string>\n   </property>\n  </widget>\n  <widget class=\"QLineEdit\" name=\"lineEdit_StartFrame\">\n   <property name=\"geometry\">\n    <rect>\n     <x>110</x>\n     <y>190</y>\n     <width>81</width>\n     <height>20</height>\n    </rect>\n   </property>\n   <property name=\"text\">\n    <string>0</string>\n   </property>\n  </widget>\n </widget>\n <resources/>\n <connections>\n  <connection>\n   <sender>buttonBox</sender>\n   <signal>accepted()</signal>\n   <receiver>SetParameterDialog</receiver>\n   <slot>accept()</slot>\n   <hints>\n    <hint type=\"sourcelabel\">\n     <x>248</x>\n     <y>254</y>\n    </hint>\n    <hint type=\"destinationlabel\">\n     <x>157</x>\n     <y>274</y>\n    </hint>\n   </hints>\n  </connection>\n  <connection>\n   <sender>buttonBox</sender>\n   <signal>rejected()</signal>\n   <receiver>SetParameterDialog</receiver>\n   <slot>reject()</slot>\n   <hints>\n    <hint type=\"sourcelabel\">\n     <x>316</x>\n     <y>260</y>\n    </hint>\n    <hint type=\"destinationlabel\">\n     <x>286</x>\n     <y>274</y>\n    </hint>\n   </hints>\n  </connection>\n </connections>\n</ui>\n"
  }
]